2 的十进制数的补码,而不将其转换为二进制形式?

Posted

技术标签:

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

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

【问题讨论】:

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

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

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

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

【讨论】:

以上是关于2 的十进制数的补码,而不将其转换为二进制形式?的主要内容,如果未能解决你的问题,请参考以下文章

原码反码以及补码

是否有一种算法可以手动将十六进制的二进制补码转换为十进制?

原码,补码,反码

原码反码补码

编码 原码 反码 补码

原码反码补码详解