到这里,大家可能会问,为什么对0进行“非“运算结果为-1,而对1进行“非“运算其结果为-2呢?
在经过上面一系列的操作后,大家应该知道,逻辑运算的操作也都是在数摞上进行的,操作前数摞上必须有参与逻辑运算的参数,操作后数摞上保留有逻辑运算的结果,在进行逻辑运算时,是按位进行运算的。如果数摞上的每一层都是一位的数,而不是32位的数,那么这时
1 非=0 0非=1
但是在汉语程序设计语言中数摞上的每一层数都是一个32位的数,所以在按位进行逻辑操作时,用1表示的逻辑真在数摞中只占用了一位,即:00000000000000000000000000000001,在进行“非”操作后,将32位的数“1”按位求反,结果就成为:11111111111111111111111111111110,这个数作为二进制补码的有符号数就显示为-2。
因此,在汉语编程中为了使逻辑运算更为适用,就规定对于一个32位的数,0为逻辑假,而非0为逻辑真。对于一个标准的汉语编程系统给出的逻辑真则为-1,这样我们最将前面程序中定义的逻辑真改为:
编 真 -1 。
这样在做上面的逻辑操作时,给出的逻辑真结果就是-1,而不是1。它保证了32位数中所有位都为1。