一、十进制与二进制互转

1. 二进制转十进制

1011010.100101(2)=90.578125(10)

方法一:“按权相加”法

256 128 64 32 16 8 4 2 1 . 0.5 0.25 0.125 0.0625 0.03125 0.015625 0.078125 0.00390625
28 27 26 25 24 23 22 21 20 2-1 2-2 2-3 2-4 2-5 2-6 2-7 2-8
/ / 1 0 1 1 0 1 0 . 1 0 0 1 0 1 / /

64+0+16+8+0+2+0+0.5+0+0+0.0625+0.015625=90.578125(10)

方法二:

1011010.100101(2)
=1×26 + 0×25 + 1×24 + 1×23 + 0×22 + 1×21 + 0×20 + 1×2-1 + 0×2-2 + 0×2-3 + 1×2-4 + 0×2-5 + 1×2-6
=64+0+16+8+0+2+0+0.5+0+0+0.0625+0+0.015625
=90.578125(10)

2. 十进制转二进制

方法一:整数部分“除2倒取余”,小数部分“乘2正取整”

90.578125(10)=90(10)+0.578125(10)
90÷2=45 • • • • • • 0
45÷2=22 • • • • • • 1
22÷2=11 • • • • • • 0
11÷2=5   • • • • • • 1
  5÷2=2   • • • • • • 1
  2÷2=1   • • • • • • 0
  1÷2=0   • • • • • • 1
90(10)=1011010(2)
0.578125(10)
0.578125×2=0.15625• • • • • • 1
0.15625×2  =0.3125  • • • • • • 0
0.3125×2    =0.625    • • • • • • 0
0.625×2      =0.25      • • • • • • 1
0.25×2        =0.5        • • • • • • 0
0.5×2          =0           • • • • • • 1
0.578125(10)=0.100101(2)
90(10)+0.578125(10)=1011010(2)+0.100101(2)=1011010.100101(2)

方法二:整数使用“权位展开法”,小数部分“乘2正取整”

90.578125(10)=64+0+16+8+0+2+0+0.5+0+0+0.0625+0+0.015625

256 128 64 32 16 8 4 2 1
/ / 1 0 1 1 0 1 0

0.578125(10)=同上
90(10)+0.578125(10)=1011010(2)+0.100101(2)=1011010.100101(2)

二、十进制与八进制互转

十进制 32786 4096 512 64 8 1 . 0.125 0.015625
八进制 85 84 83 82 81 80 8-1 8-2

1.十进制转八进制

十进制 8 16 24 64 128 192 512 4096 32768
十进制 81 81×2 81×3 82 82×2 82×3 83 84 85
八进制 10 20 30 100 200 300 1000 10000 100000

方法一:整数部分“除8进位法(8(10)=10(8),8×8(10)=100(8),8×8×8(10)=1000(8))”,小数部分“乘8正取整”

90.578125(10)=90(10)+0.578125(10)=132(8)+0.45(8)=132.45(8)
90(10)
90÷8=11 • • • • • • 2
=11个八进制+2
=8个八进制+3个八进制+2
=100+30+2
=132(8)
0.578125(10)
0.578125×8=0.625 • • • • • • 4
0.625×8      =0        • • • • • • 5
0.578125(10)=0.45(8)
注意:如果小数部分乘8的结果永远带有小数部分,就需要根据实际情况“三舍四入”

方法二:整数部分“除8倒取余”,小数部分“乘8正取整”

90.578125(10)=90(10)+0.578125(10)=132(8)+0.45(8)=132.45(8)
90÷8  =11 • • • • • • 2
11÷8  =  1 • • • • • • 3
1÷8    =  0 • • • • • • 1
90(10)=132(8)
0.578125(10)=0.45(8)

2.八进制转十进制

方法一:按权相加法

132.45(8)=1×83-1+3×81+2×80+4×8-1+5*8-2=64+24+2+4×0.125+5×0.015625=90.578125(10)

方法二(转换较复杂):整数部分“拆分法(100(8)=8×8(8),1000(8)=8×8×8(8),以数量级进行拆分)”,小数部分“按权相加法”

132.45(8)
=100(8)+30(8)+2(10)+(4×8-1)(10)+(5*8-2)(10)
=8×8(8)+3×8(8)+2+4×0.125+5×0.015625
=64+24+2+0.578125
=90.578125(10)

三、十进制与十六进制互转

1.十进制转十六进制

十进制 11 12 13 14 15 16
十六进制 A B C D E F
十进制 65536 4096 256 16 . 1 0.0625 0.00390625
十六进制 164 163 162 161 160 16-1 16-2

整数部分除16“倒取余”,小数部分乘16“正取整”
90.578125(10)=90(10)+0.578125(10)=5A(16)+0.94(16)=5A.94(16)
90(10)=5A(16)
90÷16=5 • • • • • • 10=A
5÷16  =0 • • • • • • 5
0.578125(10)=0.94(16)
0.578125×16=0.25 • • • • • • 9
0.25×16        =0      • • • • • • 4

2.十六进制转十进制(“按权相加”法)

5A.94(16)=5×162-1+10×161+916-1+4×16-2=80+10+90.0625+4*0.00390625=90.578125

四、二进制与八进制互转

二进制 八进制 二进制 十六进制
000 0 0000 0
001 1 0001 1
010 2 0010 2
011 3 0011 3
100 4 0100 4
101 5 0101 5
110 6 0110 6
111 7 0111 7
001 000 10 1000 8
001 001 11 1001 9
001 010 12 1010 A
001 011 13 1011 B
001 100 14 1100 C
001 101 15 1101 D
001 110 16 1110 E
001 111 17 1111 F

1. 二进制转八进制:从小数点位置起向左右两边划分,每三个为一组,不足三个的在最左边或最右边添0补齐,对照上边的表进行计算

1011010.100101=001 011 010.100 101=132.45(8)
                                             ←↑→

2. 八进制转二进制:与“二进制转八进制”转换方法相反

132.45(8)=001 011 010.100 101=1011010.100101(2)

3. 二进制转十六进制:从小数点位置起向左右两边划分,每四个为一组,不足四个的在最左或最右添0补齐,对照上边的表进行计算

1011010.100101=0101 1010.1001 0100=5A.94(16)
                                          ←↑→

4. 十六进制转二进制:与“二进制转十六进制”转换方法相反

5A.94(16)=0101 1010.1001 0100=1011010.100101(2)

五、八进制与十六进制互转

1. 八进制转十六进制:

八进制数→二进制数→十六进制数
八进制数→十进制数→十六进制数

2. 十六进制转八进制:

十六进制数→二进制数→八进制数
十六进制数→十进制数→八进制数

六、.NET Code

/// <summary>
/// 二进制转十进制
/// </summary>
public static decimal BinaryToDecimalism(decimal binary)
{long integer = (long)binary;decimal @decimal = binary - integer;integer = Convert.ToInt64(integer.ToString(), 2);//使用权位来计算var temp = @decimal.ToString().Split('.');if (temp.Length <= 1) return integer;var decimals = temp[1].ToCharArray();decimal tempSum = 0;for (int i = 0; i < decimals.Length; i++){int value = Convert.ToInt32(decimals[i].ToString());tempSum += value * Pow(2, -(i + 1));}return integer + tempSum;
}/// <summary>
/// 十进制转二进制
/// </summary>
/// <param name="decimalism">十进制数</param>
/// <param name="reservedDecimalNumber">保留二进制小数位数</param>
/// <returns></returns>
public static string DecimalismToBinary(decimal decimalism, int reservedDecimalNumber = 32)
{int integerPart = (int)decimalism;decimal fractionalPart = decimalism - integerPart;string integerPartResult = Convert.ToString(integerPart, 2);//由于Convert.ToDecimal(str)只能保留小数点后18位,所以方法返回字符串if (reservedDecimalNumber < 1 || fractionalPart == 0) return integerPartResult;string[] results = new string[reservedDecimalNumber];decimal loopIntegerPart = 0;decimal loopFractionalPart = fractionalPart;/*小数位乘2正取整*/for (int i = 0; i < reservedDecimalNumber; i++){loopFractionalPart = loopFractionalPart * 2;loopIntegerPart = (int)loopFractionalPart;loopFractionalPart = loopFractionalPart - loopIntegerPart;if (loopFractionalPart > 0){results[i] = loopIntegerPart.ToString();}else{results[i] = loopIntegerPart.ToString();break;}}return integerPartResult + "." + string.Join("", results);
}private static decimal Pow(decimal x, int y)
{decimal value = x;if (y > 0){for (int i = 1; i < y; i++){value *= x;}}else if(y < 0){for (int i = 1; i < -y; i++){value *= x;}value = 1 / value;}else{value=1;}return value;
}

二进制、八进制、十进制、十六进制之间的转换(含小数的转换方法)相关推荐

  1. 二进制 八进制 十进制 十六进制 之间进制转换(图解篇)

    一.本文所涉及的内容(Contents)                      目录 一.本文所涉及的内容(Contents) 二.背景(Contexts) 三.进制转换算法(Convert) ( ...

  2. 二进制与八进制十进制十六进制之间的转换

    目录 1. 计算机中数据存储的分类 2.        数值型数据的存储 2.1          十进制 2.2          二进制 2.3          八进制 2.4         ...

  3. python十六进制转换成八进制_Python 进制转换 二进制 八进制 十进制 十六进制

    全局定义一定不要丢了 全局定义 base = [str(x) for x in range()] + [ chr(x) for x in range(ord('A'),ord('A')+)] 二进制 ...

  4. 二进制 八进制 十进制 十六进制

    2->8:从个位开始把二进制数三个一组分组,然后每组分别换成8进制, 例:11,101,100 就是分组后的结果 11->3 101->5 100->4 所以结果是354 8- ...

  5. 【笔记】二进制八进制十进制十六进制互转详细教程和范例

    最近复习之前的笔记基础.又把进制转换理解了一遍.放在这里以后备查.同时作为分享. 二进制转换八进制十进制十六进制 例: 11010 二进制转换八进制 需要2进制数字为每3位分组的十进制数,不足3位的倍 ...

  6. 二进制八进制十进制十六进制及原码反码补码

    1.进制的介绍 定义:进位制,人们规定的一种进位方式:表示某一位置上的数,运算时是逢X进一位. 十进制是逢十进一:二进制是逢二进一,八进制是逢八进一: 常见进制:二进制,八进制,十进制,十六进制: 学 ...

  7. 计算机系统中常用的进制,计算机中常用 二进制 八进制 十进制 十六进制的特点...

    计算机中常用的计数制 用若干数位(由数码表示)的组合去表示一个数,各个数位之间是什么关系,即逢"几"进位,这就是进 位计数制的问题.也就是数制问题.数制,即进位计数制,是人们利用数 ...

  8. 二进制 八进制 十进制 十六进制的相互转换(精简总结)

    之前看到的都是铺垫这术语那术语的,看了半天,还不知道怎么处理.这里就根据各种文章和自己的理解总结一小下下,  不一定准确,省略一些概念等繁琐的陈述,直接上结论 1.二进制转八进制:以小数点为分界线,各 ...

  9. Java 二进制,八进制,十进制,十六进制

    学而时习之,温故而知新 二进制特征: 1 : 有2个数字组合,"0" 和"1" 2 : 运算时逢2进1 例如 101010 八进制的特点: 1: 有 8个数组组 ...

最新文章

  1. 苹果官方 iOS Demo
  2. SQL Server 为什么事务日志自动增长会降低你的性能
  3. python是什么专业的研究生好考_明年考研,我的专业是电子信息工程,请问考什么学科研究生最合适?...
  4. 使用Jest进行单元测试
  5. 把16进制转换为ascii字符c语言,ASCII转16进制C语言
  6. Microsoft JET Database Engine 错误 #39;80004005#39;的解决方法
  7. 将阿拉伯数字转换成中文大写的好算法
  8. 给年轻人几点买房建议
  9. Hybrid App实现原理
  10. MFC注册表CRegKey
  11. Apache Ant安装及使用
  12. 2012年9月 《UDID罗生门》
  13. Linux技巧(二):Linux sort命令深入解析 | sort -k M.m,N.n 命令详解
  14. 这才是世界上最健康的作息时间表
  15. Windows 10磁盘占用100%?2分钟的一招清除干净
  16. active directory教程入门
  17. 利用深度摄像头生成仿激光数据并构建地图
  18. 分析师:微软今年内收购雅虎的十个理由
  19. 除了Figma,再给你介绍10款好用的协同设计软件
  20. 计算机物质与结构微命令,2015年哈尔滨工程大学082700核科学与技术考研大纲(官方)...

热门文章

  1. cvte 前端一面 凉经
  2. 汇总各浏览器核心(js引擎及排版引擎)深究
  3. Linux C/C++ 开发(学习笔记十一 ):TCP服务器(并发网络网络编程 一请求一线程)
  4. 简单漂亮CSS3后台登录页面模板
  5. 透明隐蔽股票上班盯盘大师
  6. android iphone 记事本,iPhone上有哪些记事本软件足够你记录生活中的细节?
  7. 微信小程序仿唯聚时代,微信小程序商城,微信小程序大作业源码,小程序源码下载
  8. 华为7.0系统手机最完美激活Xposed框架的教程
  9. oracle 视图 自增列,Oracle实现自增列
  10. 微信公众号开发--群发图文消息,消息体包含图片地址