问题描述
据我所知,〜0x00等于: 第一步,将0更改为1,将1更改为零,第二步,添加1 步骤1:11111111111111111111111111111(计数= 32)
步骤2:11111111111111111111111111111 + 1 = 0
我在哪里做错了?
解决方法
~
运算符不执行2的补码求反。您可以使用一元-
一元运算符(假设您的计算机使用2的补码表示形式)来完成此操作。
~
的作用是将所有位取反。这就是全部操作,无需添加1。
步骤1是正确的;没有步骤2。一元~
不会取反值(1 => -1
),它只会反转位(0101 => 1010
)。
一元-
会否定值,并且在二进制补码系统上将执行与您的两个步骤非常相似的操作。