搜索
写经验 领红包

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

⑬八进制转十六进制

用二进制和十进制中转

⑭十六进制转八进制

用二进制和十进制中转

本文内容由小快整理编辑!