二进制、八进制、十进制与十六进制之间的转换(图片说明+举例介绍)
基础知识
数据: 在计算机中,各种信息都是以数据的形式出现的。数据经过处理后产生的结果为信息,数据是计算机中信息的载体,数据本身没有意义。
单位:位(bit)是计算机中最小的数据单位;字节(byte)是计算机中信息组织和存储的基本单位,也是计算机体系结构的基单位;1byte=8bit。
存储单位:B(字节)、KB(千字节)、MB(兆字节)、GB(吉字节)或TB(太字节)。以上是常用的换算单位,不常用的比TB更大的单位还有PB、EB、ZB、YB等。换算关系如下:
1
G
=
2
10
(
各进制间换算单位)
=
1024
M
B
1G=2^{10} (各进制间换算单位)=1024 MB
1G=210(各进制间换算单位)=1024MB
1 YB = 1024 ZB 1 ZB = 1024 EB
1 EB = 1024 PB 1 PB = 1024 TB
1 TB = 1024 GB 1 GB = 1024 MB
1 MB = 1024 KB 1 KB = 1024 B(byte)
1
G
=
2
10
M
B
=
2
20
K
B
=
2
30
B
1G=2^{10 }MB=2^{20}KB=2^{30} B
1G=210MB=220KB=230B
字长:计算机一次能够并行处理的二进制代码的位数。字长是衡量计算机性能的一个重要指标,字长越长,数据包含的位数越多,计算机的数据处理速度越快。计算机的字长通常是字节的整数倍,如8位、16位、32位、64位和128位等。
数制:用一组固定的符号和统一的规则来表示数值的方法。其中,按照进位方式计数的数制称为进位计数制。如二进制逢二进一,十进制逢十进一,以此类推。
数码:一个数制中表示基本数值大小的不同数字符号。十进制有10个数码(0,1,2,3,4,5,6,7,8,9)
基数:一个数值所使用数码的个数。二进制的基数为2,十进制为10。
位权:一个数值中某一位置上的数码所表示数值的大小。如:一个十进制数345,3的位权为
1
0
2
10^{2}
102,4的位权为
1
0
1
10^{1}
101, 5的位权为
1
0
0
10^{0}
100; 若是二进制数110,从右到左,0的位权则是
2
0
2^{0}
20,1的位权是
2
1
2^{1}
21,1的位权是
2
2
2^{2}
22,以此类推。
数位:指一个数中每一个数字所占的位置。如520.789,这个数,5表示百位、2表示十位、0表示个位、7表示十分位、8表示百分位、9表示千分位。
位数:一个自然数数位的个数,例如数字9,它只含一个数位,所以9就是一位数;五位数12345则含有个、十、百、干与万5个数位。
表示方式: 在计算机中,为了区分不同进制的数,可以用括号加数制基数xi下标的方式来表示不同数制的数。例如,(492)10 表示十进制数,(1001.1)2 表示二进制数,(4A9E)16表示十六进制数;也可以用带有字母的形式分别表示为(492)D、(1001.1)B和(4A9E)H。D表示十进制(Decimal),H表示十六进制(hexadecimal),B表示二进制(binary),O表示八进制(Octet)在程序设计中,为了区分不同进制数,常在数字后直接加英文学母后级来区别,如492D、1001.1B等。
二进制:用1、0,共2位数表示
八进制:用0、1、2、3、4、5、6、7,共8位数表示
十进制:用0、1、2、3、4、5、6、7、8、9,共10位数表示
十六进制:用0、1、2、3、4、5、6、7、8、9、A=10、B=11、C=12、D=13、E=14、F=15,共16位数表示
非十进制转为十进制
方法: 乘各自正负位权相加法
举例如下:
二进制(10110.01)2 转为十进制为: (22.25)10
(10110.01)2 这个二进制为5位数
则从右到左 位权依次为:
2
−
2
2^{-2}
2−2、
2
−
1
2^{-1}
2−1、
2
0
2^{0}
20、
2
1
2^{1}
21、
2
2
2^{2}
22、
2
3
2^{3}
23、
2
4
2^{4}
24
则整数部分有:
0
∗
2
0
+
1
∗
2
1
+
1
∗
2
2
+
0
∗
2
3
+
1
∗
2
4
0*2^{0}+1*2^{1}+1*2^{2}+0*2^{3}+1*2^{4}
0∗20+1∗21+1∗22+0∗23+1∗24 =0+2+4+0+16=22
小数部分为:
0
∗
2
−
1
+
1
∗
2
−
2
0*2^{-1}+1*2^{-2}
0∗2−1+1∗2−2=0.25
整数与小数相加为:22+0.25=22.25
八进制(232.22)8 转为十进制为:(154.28125)10
(232.22)O这个八进制为3位数
则从右到左 位权依次为:$8{-2}、$8{-1}、
8
0
、
8
1
、
8
2
8^{0}、8^{1}、8^{2}
80、81、82
则整数部分有:
2
∗
8
0
+
3
∗
8
1
+
2
∗
8
2
2*8^{0}+3*8^{1}+2*8^{2}
2∗80+3∗81+2∗82=2+24+128=154
小数部分为:
2
∗
8
−
1
+
2
∗
8
−
2
2*8^{-1}+2*8^{-2}
2∗8−1+2∗8−2=0.28125
整数与小数相加为:154+0.28125=154.28125
十六进制(232.6) 16转为十进制为:(562.375)10
(232)16这个十六进制为3位数
则从右到左 位权依次为:
1
6
−
1
、
1
6
0
、
1
6
1
、
1
6
2
16^{-1}、16^{0}、16^{1}、16^{2}
16−1、160、161、162
则整数部分有:
2
∗
1
6
0
+
3
∗
1
6
1
+
2
∗
1
6
2
2*16^{0}+3*16^{1}+2*16^{2}
2∗160+3∗161+2∗162=2+48+512=562
小数部分有:
6
∗
1
6
−
1
6*16^{-1}
6∗16−1=0.375
整数部分与小数部分相加:562+0.375=562.375
十进制转为其他进制数
方法:除x取余倒读法(整数),乘x取整正读法(小数)
将整数和小数分别转换,再拼接起来,也就是十进制转哪个进制就除以哪个进制的位数,即转2除以2,转8除以8,依次类推;小数位乘以该进制位数,即转8乘8,乘后去整数为,再以小数位继续乘,直至小数位为0。
十进制(225.625)10转为二进制为:(11100001.101)2
方法:除2取余倒读法(整数部分)、乘2取整正读法(小数部分)。
将该十进制数除以2,直到商为0时为止,再倒读余数1或0,得到整数部分(11100001);将该十进制的小数乘以2,取整数后,再取所的整数的小数位反复乘2,直到乘积的小数部分为0为止,即得到小数部分(101)。
如图所示:
整数部分
小数部分
注意:这里小数位乘的时候第二次应该为0.25*2=0.5
十进制(1000.5)10转为八进制为:(1750.4)8
方法:除8取余倒读法(整数部分)、乘8取整正读法(小数部分)。
将该十进制数除以8,直到商为0时为止,再倒读余数1或0,得到整数部分(1750);将该十进制的小数部分乘以8,取整数后,再取所的整数的小数位反复乘8,直到乘积的小数部分为0或位数达到所需的精确度要求为止,即得到小数部分(0.4)
如图所示整数部分为:
这里 小数部分为:
0.5
∗
8
=
4.0
0.5*8=4.0
0.5∗8=4.0,取整数4,小数位为0则结束。
如果 小数部分为0.8的话就成死循环0.6314了:
0.8
∗
8
=
6.4
0.8*8=6.4
0.8∗8=6.4,取整数6后,再取小数位0.4乘
0.4
∗
8
=
3.2
0.4*8=3.2
0.4∗8=3.2,取整数3后,再取小数位0.2乘
0.2
∗
8
=
1.6
0.2*8=1.6
0.2∗8=1.6,取整数1后,再取小数位0.6乘
0.6
∗
8
=
4.8
0.6*8=4.8
0.6∗8=4.8,取整数4后,再取小数位0.8乘
0.8
∗
8
=
6.4
0.8*8=6.4
0.8∗8=6.4,就又回到0.8了,继续循环,所以用0.5做个例子。
十进制(5621.5)10转为十六进制为:(15F5.8)16
方法:除16取余倒读法(整数部分)、乘16取整正读法(小数部分)。
将该十进制数除以16,直到商为0时为止,再倒读余数1或0,得到整数部分(15F5);将该十进制的小数部分乘以16,取整数,反复乘16,直到乘积的小数部分为0,即得到小数部分。
如图所示整数部分为:
小数部分为:
0.5
∗
16
=
8.0
0.5*16=8.0
0.5∗16=8.0,取整数8,小数位为0则结束。
二进制转为八进制、十六进制数
二进制(1101001.101)2转八进制为:(151.5)8
方法:3位分一组,按2相加
以小数点为界,整数部分从右向左每3位为一组,若最后一组不足3位,则在最高位前面添0补足3位,然后将每组中的二进制数按2的权相加,得到对应的八进制数;小数部分从左向右每3位分为一组,最后一组不足3位时,尾部用0补足3位,同上按2权相加,然后按照顺序写出每组二进制数对应的八进制数即可。
如图所示整数和小数部分为:
二进制(101110011000111011.1)2转十六进制为:(2E63B.8)16
方法:4位分一组,按2相加
以小数点为界,整数部分从右向左每4位为一组,若最后一组不足4位,则在最高位前面添0补足4位,然后将每组中的二进制数按权相加,得到对应的十六进制数;小数部分从左向右每4位分为一组,最后一组不足4位时,尾部用0补足4位,同上按2权相加,然后按照顺序写出每组二进制数对应的十六进制数即可。
如图所示整数部分为:
小数部分为:“1”,补4位为“1000”;按2相加为1*2^3+0+0+0=8
八进制、十六进制转为二进制
八进制(162.4)8转二进制为:(1110010.1)2
方法:各除2取余,0补够3位
从八进制数的低位开始,将每一位上的八进制数除以2得到对应的3位二进制数,位数不够的补0;小数部分也同上进行转换。
如图所示整数与小数部分为:
十六进制(3B7D)16转二进制为:(11101101111101)2
方法:各除2取余,0补够4位
从十六进制数的低位开始,将每一位上的十六进制数写成对应的4位二进制数,位数不够的补0;小数部分也同上进行转换。
如图所示:
注意:上图中的D为 13,不是14,一时笔误,但是结果是正确的
总结
十进制
非十进制 转为 十进制: 乘各自正负位权相加法
十进制 转为 非十进制: 除x取余倒读法(整数),乘x取整正读法(小数)
二进制
二进制 转为 八进制、十六进制数: 3或4位分一组,按2相加
(理解为合成)
八进制、十六进制 转为 二进制数:各除2取余,0补够3或4位
(理解为分解)
——————————————————————————
以上就是今日博客全部内容了
创作不易,若对您有帮助,还请点赞、关注一二呢,感谢支持。
更多推荐
所有评论(0)