c语言中二进制八进制十六进制如何转换(c语言中2进制8进制16进制)
导语:C语言-二进制、八进制、十进制、十六进制相互转换
①十进制(正整数)转二进制
除2取余,倒序排列,高位补0
66÷2=33余0
33÷2=16余1
16÷2=8余0
8÷2=4余0
4÷2=2余0
2÷2=1余0
1÷2=0余1
倒序1000010
66对应二进制01000010
~
②十进制(小数)转二进制
乘2取整
0.66×2=1.32取整1
0.32×2=0.64取整0
0.64×2=1.28取整1
0.28×2=0.56取整0
0.56×2=1.12取整1
0.12×2=0.24取整0
0.24×2=0.48取整0
0.48×2=0.96取整0
顺序取8位精度
0.66对应二进制0.10101000
~
③二进制转十进制(整数)
依次乘2的n次方,再求和
01000010对应
2^8,2^7,2^6,2^5,2^4,2^3,2^2,2^1,2^0,
0×2^0=0
1×2^1=2
0×2^2=0
0×2^3=0
0×2^4=0
0×2^5=0
1×2^6=64
0×2^7=0
求和得:二进制对应十进制为66
~
④二进制转十进制(小数)
依次乘2的-n次方,再求和
0.10101000对应
2^0,2^(-1),2^(-2),2^(-3),2^(-4),2^(-5),2^(-6),2^(-7),2^(-8)
0×2^0=0
1×2^(-1)=0.5
1×2^(-3)=0.125
1×2^(-5)=0.03125
求和得:二进制对应十进制为0.65625
因为精度问题,无法返回到0.66
~
⑤二进制转八进制
三合一,依次乘2的n次方求和
01000010分为
001、000、010
0×2^2+0×2^1+1×2^0=1
0×2^2+0×2^1+0×2^0=0
0×2^2+1×2^1+0×2^0=2
二进制对应八进制为102
~
⑥八进制转二进制
除2取余,倒序排列,高位补0
102
1÷2=0余1
高位补0得001
0÷2=0余0
高位补0得000
2÷2=1余0,1÷2=0余1
高位补0得010
八进制对应二进制为001000010
~
⑦二进制转十六进制
四合一,依次乘2的n次方求和
01000010分为
0100、0010
0×2^3+1×2^2+0×2^1+0×2^0=4
0×2^3+0×2^2+1×2^1+0×2^0=2
二进制对应十六进制为42
注意10,11,12,13,14,15
要转换为字母ABCDEF
~
⑧十六进制转二进制
除2取余,倒序排列,高位补0
42
4÷2=2余0,2÷2=1余0,1÷2=0余1,
高位补0得0100
2÷2=1余0,1÷2=0余1,
高位补0得0010
十六进制对应二进制为001000010
~
⑨十进制转八进制
除8取余,倒序排列,高位补0
(或通过二进制中转)
66
66÷8=8余2,
8÷8=1余0,
1÷8=0余1,
十进制对应八进制为102
~
⑩十进制转十六进制
除16取余,倒序排列,高位补0
(或通过二进制中转)
66
66÷16=4余2,
4÷16=0余4,
十进制对应十六进制为42
~
⑪八进制转十进制
依次乘8的n次方,再求和
102
1×8^2+0×8^1+2×8^0=66
八进制对应十进制为66
~
⑫十六进制转十进制
依次乘16的n次方,再求和
42
4×16^1+2×16^0=66
十六进制对应十进制为66
~
⑬八进制转十六进制
用二进制和十进制中转
~
⑭十六进制转八进制
用二进制和十进制中转
本文内容由小快整理编辑!