我知道如何用2的补码将数字转换成二进制数,但我仍然对它的概念感到困惑。
我们是否只在将负数转换为二进制时使用2的补码?
任何帮助都会很棒!感谢
答案 0 :(得分:0)
负数的二进制补码表示法实际上取决于定义明确的固定长度编码。为什么?它要求前导零在语义上相关。可变长度编码(如通常在数学中)忽略前导零:0101和101是相同的数字。但是,在二进制补码中,其中一个是正数(0101 = 4,用4位二进制补码表示),另一个是负数(101 = -3表示3位2&#39补充符号)。因此,您必须指定两个补码的容器大小才有意义。
既然这已经不在了,那么你的问题的答案就会变得更加清晰。长度为k
的任何给定字符串都是k
- 位2的补码表示法中的数字。当且仅当最高有效位为零时,该数字为正。任何给定的"肯定"对于任何给定的两个补码表示法,如果它不需要设置k
位,那么你所拥有的数字只是正数,其中k
是你的位数符号。例如,在4位二进制补码表示法中,"正数"数字8(= 1000)无法表示,如果您无论如何都尝试这样做,该数字将被解释为-8(= 1000)。可表示的范围是[-8,7] = [1000,0111]。