进制转换
基础知识非十进制转为十进制二进制(10110.01)~2~ 转为十进制为: (22.25)~10~八进制(232.22)~8~ 转为十进制为:(154.28125)~10~十六进制(232.6) ~16~转为十进制为:(562.375)~10~ 十进制转为其他进制数十进制(225.625)~10~转为二进制为:(11100001.101)~2~十进制(1000.5)~10~转为八进制为:(1750.4)~8~十进制(5621.5)~10~转为十六进制为:(15F5.8)~16~ 二进制转为八进制、十六进制数二进制(1101001.101)~2~转八进制为:(151.5)~8~二进制(101110011000111011.1)~2~转十六进制为:(2E63B.8)~16~ 八进制、十六进制转为二进制八进制(162.4)~8~转二进制为:(1110010.1)~2~十六进制(3B7D)~16~转二进制为:(11101101111101)~2~ 总结十进制二进制基础知识
数据: 在计算机中,各种信息都是以数据的形式出现的。数据经过处理后产生的结果为信息,数据是计算机中信息的载体,数据本身没有意义。
单位:位(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位
——————————————————————————
以上就是今日博客全部内容了
创作不易,若对您有帮助,还请点赞、关注一二呢,感谢支持。