二进制、八进制、十进制、十六进制之间的转换(含小数的转换方法)
一、十进制与二进制互转
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;
}
二进制、八进制、十进制、十六进制之间的转换(含小数的转换方法)相关推荐
- 二进制 八进制 十进制 十六进制 之间进制转换(图解篇)
一.本文所涉及的内容(Contents) 目录 一.本文所涉及的内容(Contents) 二.背景(Contexts) 三.进制转换算法(Convert) ( ...
- 二进制与八进制十进制十六进制之间的转换
目录 1. 计算机中数据存储的分类 2. 数值型数据的存储 2.1 十进制 2.2 二进制 2.3 八进制 2.4 ...
- python十六进制转换成八进制_Python 进制转换 二进制 八进制 十进制 十六进制
全局定义一定不要丢了 全局定义 base = [str(x) for x in range()] + [ chr(x) for x in range(ord('A'),ord('A')+)] 二进制 ...
- 二进制 八进制 十进制 十六进制
2->8:从个位开始把二进制数三个一组分组,然后每组分别换成8进制, 例:11,101,100 就是分组后的结果 11->3 101->5 100->4 所以结果是354 8- ...
- 【笔记】二进制八进制十进制十六进制互转详细教程和范例
最近复习之前的笔记基础.又把进制转换理解了一遍.放在这里以后备查.同时作为分享. 二进制转换八进制十进制十六进制 例: 11010 二进制转换八进制 需要2进制数字为每3位分组的十进制数,不足3位的倍 ...
- 二进制八进制十进制十六进制及原码反码补码
1.进制的介绍 定义:进位制,人们规定的一种进位方式:表示某一位置上的数,运算时是逢X进一位. 十进制是逢十进一:二进制是逢二进一,八进制是逢八进一: 常见进制:二进制,八进制,十进制,十六进制: 学 ...
- 计算机系统中常用的进制,计算机中常用 二进制 八进制 十进制 十六进制的特点...
计算机中常用的计数制 用若干数位(由数码表示)的组合去表示一个数,各个数位之间是什么关系,即逢"几"进位,这就是进 位计数制的问题.也就是数制问题.数制,即进位计数制,是人们利用数 ...
- 二进制 八进制 十进制 十六进制的相互转换(精简总结)
之前看到的都是铺垫这术语那术语的,看了半天,还不知道怎么处理.这里就根据各种文章和自己的理解总结一小下下, 不一定准确,省略一些概念等繁琐的陈述,直接上结论 1.二进制转八进制:以小数点为分界线,各 ...
- Java 二进制,八进制,十进制,十六进制
学而时习之,温故而知新 二进制特征: 1 : 有2个数字组合,"0" 和"1" 2 : 运算时逢2进1 例如 101010 八进制的特点: 1: 有 8个数组组 ...
最新文章
- 苹果官方 iOS Demo
- SQL Server 为什么事务日志自动增长会降低你的性能
- python是什么专业的研究生好考_明年考研,我的专业是电子信息工程,请问考什么学科研究生最合适?...
- 使用Jest进行单元测试
- 把16进制转换为ascii字符c语言,ASCII转16进制C语言
- Microsoft JET Database Engine 错误 #39;80004005#39;的解决方法
- 将阿拉伯数字转换成中文大写的好算法
- 给年轻人几点买房建议
- Hybrid App实现原理
- MFC注册表CRegKey
- Apache Ant安装及使用
- 2012年9月 《UDID罗生门》
- Linux技巧(二):Linux sort命令深入解析 | sort -k M.m,N.n 命令详解
- 这才是世界上最健康的作息时间表
- Windows 10磁盘占用100%?2分钟的一招清除干净
- active directory教程入门
- 利用深度摄像头生成仿激光数据并构建地图
- 分析师:微软今年内收购雅虎的十个理由
- 除了Figma,再给你介绍10款好用的协同设计软件
- 计算机物质与结构微命令,2015年哈尔滨工程大学082700核科学与技术考研大纲(官方)...
热门文章
- cvte 前端一面 凉经
- 汇总各浏览器核心(js引擎及排版引擎)深究
- Linux C/C++ 开发(学习笔记十一 ):TCP服务器(并发网络网络编程 一请求一线程)
- 简单漂亮CSS3后台登录页面模板
- 透明隐蔽股票上班盯盘大师
- android iphone 记事本,iPhone上有哪些记事本软件足够你记录生活中的细节?
- 微信小程序仿唯聚时代,微信小程序商城,微信小程序大作业源码,小程序源码下载
- 华为7.0系统手机最完美激活Xposed框架的教程
- oracle 视图 自增列,Oracle实现自增列
- 微信公众号开发--群发图文消息,消息体包含图片地址