请教关于C语言学习中的二进制八进制和十六进制的问题

2024-12-20 09:38:59
推荐回答(3个)
回答1:

这是由进制数的位权决定的,位权就是某个固定位置上的计数单位
2进制转换为10进制
1000001(2)=1*2^6+0*2^5+…+1*2^0=65(10)
8进制转为10进制
101(8)=1*8^2+0*8^1+1*8^0=65(10)(“8^2”表示8的平方)
16进制转为10进制
41(16)=4*16^1+1*16^0=65(10)

10进制数N和其他d进制之间的转换方法很多,其中一个简单算法基于下列原理:
N=(N div d)*d+N mod d (其中 div 为整除运算,mod 为求余运算)

10进制转换为2进制:(除2取余,然后倒序)
N……………N div 2…………N mod 2
65…………65/2=32……………1
32…………32/2=16……………0
16…………16/2=8 ……………0
8…………8/2=4 ……………0
4…………4/2=2 ……………0
2…………2/2=1 ……………0
1…………1/2=0 ……………1 则:
65(10)=1000001(2)

10进制换为8进制:
N……………N div 8…………N mod 8
65…………65/8=8……………1
8…………8/8=1 ……………0
1…………1/8=0 ……………1
65(10)=101(8)

10进制转换为16进制:
N……………N div 16…………N mod 16
65…………65/16=4……………1
4…………4/8=0 ……………4
65(10)=41(16)

回答2:

首先肯定有的...
二进制转十进制
从最后一位开始算,依次列为第0、1、2...位
第n位的数(0或1)乘以2的n次方
得到的结果相加就是答案
例如:01101011.转十进制:
第0位:1乘2的0次方=1
1乘2的1次方=2
0乘2的2次方=0
1乘2的3次方=8
0乘2的4次方=0
1乘2的5次方=32
1乘2的6次方=64
0乘2的7次方=0
然后:1+2+0
+8+0+32+64+0=107.
二进制01101011=十进制107.

回答3:

十进制转换为二进制是除2反向取余
20000,30000转二进制都是如此!

2进制从右往左每四位一个子段,把这个4位2进制换成16进制数就是对应的16进制的数
2进制 16进制 如:FF16进制 11111111二进制
0000 0
0001 1
0010 2
0011 3
0100 4
0101 5
0110 6
1111 7
1000 8
1001 9
1010 A
1011 B
1100 C
1101 D
1110 E
1111 F
二进制 八进制 十进制 十六进制
1 1 1 1
10 2 2 2
11 3 3 3
100 4 4 4
101 5 5 5
110 6 6 6
111 7 7 7
1000 10 8 8
1001 11 9 9
1010 12 10 A
1011 13 11 B
1100 14 12 C
1101 15 13 D
1110 16 14 E
1111 17 15 F
10000 20 16 10

⒈二进制与十进制的转换。
⑴二进制转换成十进制
把十进制数17转换二进制数。
2 17 1(最低位)

2 8 0

2 4 0

2 2 0

1 1(最高位)
结果等于10001
⒉二进制转换成十进制
把二进制数11011转换成十进制。
(11011)2=1×24+1×23+0×22+1×21+1×20
=16+8+0+2+1
=27
八进制、十六进制与十进制的转换。
⑴十进制数转换成八进制数
8 247 7(最低位)

8 30 6

3 3(最高位)
结果等于367
⑵八进制数转换成十进制数
(367)8=3×82+6×81+7×80
=192+48+7
=(247)10
⑶十进制换成十六进制
16 578 2(最低位)

16 36 4

2 2(最高位)
结果等于242
⑷十六进制转换成十进制数
(242)16=2×162+4×161+2×160
=512+64+2
=578