〜0x00如何返回-1?

问题描述

据我所知,〜0x00等于: 第一步,将0更改为1,将1更改为零,第二步,添加1 步骤1:11111111111111111111111111111(计数= 32)

步骤2:11111111111111111111111111111 + 1 = 0

我在哪里做错了?

解决方法

~运算符不执行2的补码求反。您可以使用一元-一元运算符(假设您的计算机使用2的补码表示形式)来完成此操作。

~的作用是将所有位取反。这就是全部操作,无需添加1。

,

步骤1是正确的;没有步骤2。一元~不会取反值1 => -1),它只会反转位0101 => 1010)。

一元-会否定值​​,并且在二进制补码系统上将执行与您的两个步骤非常相似的操作。