【发布时间】:2012-10-17 08:24:05
【问题描述】:
我无法进行 2 补码计算。
我知道 C 编译 ~b 如果 b=5,它会将所有位反转为 -6。但为什么呢?
int b=101,将所有位取反为 010,然后对于 2 个补码符号,我只需添加 1,但它变为 011,即 3,这是错误的答案。
我应该如何用位反转运算符计算〜?
【问题讨论】:
-
~(~a) == a对于任何a,因为~运算符是自逆的。我真的不知道如何解释为什么会这样,除了观察~独立地对每个位进行操作,而且对于单个位来说肯定是自反的。 -
" 反转所有位是 010" -- 不,反转所有位会产生 111111...010
标签: c bit-manipulation twos-complement