【问题标题】:2's complement of a Decimal number, without converting it to binary form?2 的十进制数的补码,而不将其转换为二进制形式?
【发布时间】:2021-10-04 18:45:47
【问题描述】:

如何转换,例如n=52 (110100) 转换成表示其 2 的补码的十进制数(即 12 (001100))? 是否有使用位操作(使用 C++)的公式/技巧?

【问题讨论】:

  • 您对two's complement 了解多少?任何关于它的体面资源都应该告诉您如何以一种方式或另一种方式转换数字(如果您知道一种方式,则可以推断出另一种方式)。
  • 此外,除非您处理的是负整数,否则转换没有多大意义。如果你真的有一个六位整数,那么110100 应该是一个负数。
  • ~n + 1 将为您提供 n 的 2 补码。这就是整数如何转换为 2 的补码形式。但是您应该阅读更多关于“为什么使用 2 的补码形式?”。

标签: c++ binary bit-manipulation bit


【解决方案1】:

如果 x-bit 数字那么,2^x - n 会给你 n 的 2 的补码(十进制)。

在您的情况下,您考虑了 6 位数字,因此 64 - 52 = 1252 的 2 补码。

另请注意,52 应以 2 的补码表示的有符号 6 位表示法解释为 -12

【讨论】:

    猜你喜欢
    • 2013-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-15
    • 2014-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多