按位和负整数不同于按位和正整数
bitwise and on negative integer is different from bitwise and on positive integer
我找到了几个关于负整数按位运算的帖子,我发现一个很有帮助,它说负整数按位运算与正整数相同,但是当我测试-4和-5时在3种不同的语言中(C++,Object(FPC)-Pascal,和Dlang)他们都输出-8,同时4和5是4,为什么不同?
虽然大多数语言不需要(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
我找到了几个关于负整数按位运算的帖子,我发现一个很有帮助,它说负整数按位运算与正整数相同,但是当我测试-4和-5时在3种不同的语言中(C++,Object(FPC)-Pascal,和Dlang)他们都输出-8,同时4和5是4,为什么不同?
虽然大多数语言不需要(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