十进制负数转换成二进制数

2024-12-04 13:51:59
推荐回答(3个)
回答1:

数制转换(用8bit整数说明):
十进制转二进制:
正数直接转 如 55 = 0011 0111b
负数:绝对值转换成二进制,按位取反,加1,
如-55,先把55转换成0011 0111b,取反: 1100 1000b 加1:1100 1001b

逆问题,二进制转十进制,要弄清楚是多少位的,不足的部分要在前面把0补上。
首先看首位是0还是1, 0表示正数,1表示负数。正数直接转,负数,先减一,按位取反,转换十进制,加上负号。
例如 0100 1000 转过来是72
1000 0000 第一位为1 表示是个负数,所以减一,0111 1111,取反1000 0000转换成十进制128,加上负号 -128。

有了二进制,16进制和8进制数都不是问题。

回答2:

这个应该是对补码进行操作吧?假如5个bit来表示一个数
可以这么证明:负数全部取反与原补码的和为11111,如果把00001与11111相加,就得到了00000,这说明这个操作最后求出来的数是正确的。
再考虑先减1再取反是一个逆操作也是正确的
其实就和-(+a)和+(-a)一个道理

回答3:

???

我知道的十进制转二进制是:
不断×2,每次取整数位。如果整数位变成1了,取1后,再把整数位变成0,小数部分不变,知道取到题目上要求的位数。如果没要求,就随便你取到第几位。取到的数正着看,和整数相反。