按位和负整数与按位和正整数不同

时间:2018-06-08 08:23:53

标签: bitwise-and

我找到了几个关于负整数的按位运算的线程,我发现一个非常有用,它说负整数的按位运算与正整数相同,但是当我测试-4&在3种不同语言(C ++,对象(FPC)-Pascal和Dlang)中它们都输出-8,同时4& 5是4,为什么不同?

1 个答案:

答案 0 :(得分:0)

虽然大多数语言都不需要(C和C ++和Pascal绝对不会;我不知道D),但基本上所有现代计算机都使用two's complement作为整数。

  ..0 0100 = positive 4  
& ..0 0101 = positive 5  
= ..0 0100 = positive 4

  ..1 1100 = negative 4  
& ..1 1011 = negative 5  
= ..1 1000 = negative 8