ANSI C89的零补码

ANSI C89的零补码,c,ansi,C,Ansi,当发现赞美词0时,结果是-1。为什么0的补码是-1?它始终是-1还是取决于编译器?只有当编译器用于表示有符号整数时,用C编写的0的按位求反(如~0)才是-1。因此,这是编译器表示数字的方式的结果,通常不是“真的”。它在中是-1。编译器可以自由选择其他表示形式。这里的“补足”或“补充”是什么意思?你的意思是按位求反吗?它意味着~operator的操作。是的,按位求反……但目前使用的编译器实际上没有这样做。:)@约翰:仍然有一些遗留系统使用自己的补充,但它们越来越少了。当我编写C代码时,我通常假设两

当发现赞美词0时,结果是-1。为什么0的补码是-1?它始终是-1还是取决于编译器?

只有当编译器用于表示有符号整数时,用C编写的0的按位求反(如
~0
)才是-1。因此,这是编译器表示数字的方式的结果,通常不是“真的”。

它在中是-1。编译器可以自由选择其他表示形式。

这里的“补足”或“补充”是什么意思?你的意思是按位求反吗?它意味着~operator的操作。是的,按位求反……但目前使用的编译器实际上没有这样做。:)@约翰:仍然有一些遗留系统使用自己的补充,但它们越来越少了。当我编写C代码时,我通常假设两个是互补的。使用比C89更新的结构可能比假设两个是互补的更大的可移植性降低。