我们也可以将负二进制解释为正二进制吗(请阅读问题)?
can we interpret negative binary as positive too(read the question please)?
我已经知道负二进制数的概念,最高位0表示二进制为正,最高位1表示二进制为负
但让我不敢在 Whosebug 上提问的问题是:
我们可能想要表示一个巨大数字的次数,它的表示恰好在 msb 中有 1。
让我这样解释:通过考虑上面的二进制数负数对应规则,我们可以说 ;
在 8 位系统中,例如,正 12(十进制)的值在二进制中将写为 00001100,但负 12(十进制)将写为
10001100 但让我有点困惑的是,10001100 也可以解释为十进制的 268,而我们知道使用这种转换方法它是二进制 12 的负数形式。
我只是想知道如何处理这种棘手的、双面的解释二进制数的可能方式,就像我上面给出的例子(它似乎是否定,哦!但等等它也可能不是:).
这取决于您使用的类型。如果您使用的是带符号的 8 位表示,那么您可以存储的最大数字是 1111111(即第一位留出)。
在我们的示例中,这将转换为整数值 127。
如果您使用无符号类型,则可以使用额外的位来存储 11111111 或表示为整数的 255。
具有良好编译器的强类型语言应该会抓住你试图将 134 分配给一个带符号的 8 位整数并吐出错误的问题。
如果你正在做一些奇怪的事情,自己摆弄比特,那你就靠你自己了!没有办法重建,post hoc,无论它是一个负数还是一个大的正数,所以你必须选择一个系统并坚持下去。
现在的一般惯例是始终坚持使用带符号的表示形式 - 尽管我看到代码(通常用于天体物理计算等极端计算任务)使用无符号值只是为了节省内存。当然,图像通常会按照惯例使用无符号值。
我已经知道负二进制数的概念,最高位0表示二进制为正,最高位1表示二进制为负
但让我不敢在 Whosebug 上提问的问题是: 我们可能想要表示一个巨大数字的次数,它的表示恰好在 msb 中有 1。
让我这样解释:通过考虑上面的二进制数负数对应规则,我们可以说 ;
在 8 位系统中,例如,正 12(十进制)的值在二进制中将写为 00001100,但负 12(十进制)将写为
10001100 但让我有点困惑的是,10001100 也可以解释为十进制的 268,而我们知道使用这种转换方法它是二进制 12 的负数形式。
我只是想知道如何处理这种棘手的、双面的解释二进制数的可能方式,就像我上面给出的例子(它似乎是否定,哦!但等等它也可能不是:).
这取决于您使用的类型。如果您使用的是带符号的 8 位表示,那么您可以存储的最大数字是 1111111(即第一位留出)。
在我们的示例中,这将转换为整数值 127。
如果您使用无符号类型,则可以使用额外的位来存储 11111111 或表示为整数的 255。
具有良好编译器的强类型语言应该会抓住你试图将 134 分配给一个带符号的 8 位整数并吐出错误的问题。
如果你正在做一些奇怪的事情,自己摆弄比特,那你就靠你自己了!没有办法重建,post hoc,无论它是一个负数还是一个大的正数,所以你必须选择一个系统并坚持下去。
现在的一般惯例是始终坚持使用带符号的表示形式 - 尽管我看到代码(通常用于天体物理计算等极端计算任务)使用无符号值只是为了节省内存。当然,图像通常会按照惯例使用无符号值。