Computer science 大约2';自然数到二进制数的s补码

Computer science 大约2';自然数到二进制数的s补码,computer-science,twos-complement,Computer Science,Twos Complement,我知道如何用2的补码将一个数字转换成二进制,但我仍然对它的概念感到困惑 只有当我们把负数转换成二进制时,我们才使用2的补码吗 任何帮助都会很好!感谢Two的负数补码表示法实际上取决于要定义的固定长度编码。为什么?它要求前导零在语义上是相关的。可变长度编码(通常与数学一样)忽略前导零:0101和101是相同的数字。然而,在2的补码中,其中一个数字是正的(在4位2的补码表示法中0101=5),另一个是负的(在3位2的补码表示法中101=-3)。因此,您确实必须指定容器大小,以便二的补码有意义 现在,

我知道如何用2的补码将一个数字转换成二进制,但我仍然对它的概念感到困惑

只有当我们把负数转换成二进制时,我们才使用2的补码吗


任何帮助都会很好!感谢

Two的负数补码表示法实际上取决于要定义的固定长度编码。为什么?它要求前导零在语义上是相关的。可变长度编码(通常与数学一样)忽略前导零:0101和101是相同的数字。然而,在2的补码中,其中一个数字是正的(在4位2的补码表示法中0101=5),另一个是负的(在3位2的补码表示法中101=-3)。因此,您确实必须指定容器大小,以便二的补码有意义


现在,这已经不存在了,你的问题的答案变得更清楚了。任何给定的长度为
k
的位串都是
k
位2的补码表示法中的数字。当且仅当最高有效位为零时,该数字为正。如果不需要设置
k
th位,则您拥有的任何给定“正数”仅相对于任何给定的2的补码表示法为正数,其中
k
是表示法中的位数。例如,在4位2的补码表示法中,“正”数字8(=1000)无法表示,如果您尝试这样做,该数字将被解释为-8(=1000)。可表示的范围为[-8,7]=[10000111]。

Two的负数补码表示法实际上取决于要定义的固定长度编码。为什么?它要求前导零在语义上是相关的。可变长度编码(通常与数学一样)忽略前导零:0101和101是相同的数字。然而,在2的补码中,其中一个数字是正的(在4位2的补码表示法中0101=5),另一个是负的(在3位2的补码表示法中101=-3)。因此,您确实必须指定容器大小,以便二的补码有意义

现在,这已经不存在了,你的问题的答案变得更清楚了。任何给定的长度为
k
的位串都是
k
位2的补码表示法中的数字。当且仅当最高有效位为零时,该数字为正。如果不需要设置
k
th位,则您拥有的任何给定“正数”仅相对于任何给定的2的补码表示法为正数,其中
k
是表示法中的位数。例如,在4位2的补码表示法中,“正”数字8(=1000)无法表示,如果您尝试这样做,该数字将被解释为-8(=1000)。可表示范围为[-8,7]=[10000111]