【发布时间】: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