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