永发信息网

负数进制转换

答案:1  悬赏:40  手机版
解决时间 2021-04-23 13:48
  • 提问者网友:蓝琪梦莎
  • 2021-04-22 13:33

谁知道负数十进制怎么转换八进制和十六进制

比如 int=-10 printf("%x,%o",x,x)

是怎么计算的 要详细点的

最佳答案
  • 五星知识达人网友:往事隔山水
  • 2021-04-22 14:11

十进制转二进制和二进制转十进制的算法是很多初学者头疼的问题,觉得很难掌握。这里,我通过举例说明这两种进制的转换方法。
(一)十进制(整数)转二进制:
用2辗转相除至结果为1
将余数和最后的1从下向上倒序写 就是结果。
例1:将405转换成二进制的数。
解:405/2=202余1(注意这个1将写在二进制数的最后面)
202/2=101余0
101/2=50余1
50/2=25余0
25/2=12余1
12/2=6余0
6/2=3余0
3/2=1余1(注意这个1将写在二进制数的最前面)
故405转换成二进制的数为110010101
例2:将302转换成二进制的数。
302/2 = 151 余0 (注意这个0将写在二进制数的最后面)
151/2 = 75 余1
75/2 = 37 余1
37/2 = 18 余1
18/2 = 9 余0
9/2 = 4 余1
4/2 = 2 余0
2/2 = 1 余0 (注意这个1将写在二进制数的最前面)
故302转换成二进制的数为100101110
(二)二进制转十进制
从最后一位开始算,依次列为第0、1、2...位
第n位的数(0或1)乘以2的n次方
得到的结果相加就是答案
例如:1101011.转十进制:
第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

然后:1+2+0
+8+0+32+64=107.
二进制1101011=十进制107.


对十进制小数乘2得到的整数部分和小数部分,整数部分既是相应的二进制数码,再用2乘小数部分(之前乘后得到新的小数部分),又得到整数和小数部分.
如此不断重复,直到小数部分为0或达到精度要求为止.第一次所得到为最高位,最后一次得到为最低位
如:0.25的二进制
0.25*2=0.5 取整是0
0.5*2=1.0 取整是1
即0.25的二进制为 0.01 ( 第一次所得到为最高位,最后一次得到为最低位)


0.8125的二进制


0.8125*2=1.625 取整是1


0.625*2=1.25 取整是1


0.25*2=0.5 取整是0


0.5*2=1.0 取整是1


即0.8125的二进制是0.1101(第一次所得到为最高位,最后一次得到为最低位)



十进制小数→→→→→八进制小数 方法:“乘8取整”

0.71875)10 =(0.56)8



0.71875*8=5.75 取整5


0.75*8=6.0 取整6
即0.56


十进制小数→→→→→十六进制小数方法:“乘16取整”例如:

(0.142578125)10=(0.248)16



0.142578125*16=2.28125 取整2


0.28125*16=4.5 取整4


0.5*16=8.0 取整8


即0.248

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯