为什么if(-8&7)返回false

时间:2019-11-24 13:44:45

标签: c bitwise-operators bitwise-and

当我尝试运行以下代码时,它将打印“ FALSE”而不是“ TRUE” 有人可以解释为什么代码返回false吗?

wheel = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
wlen = len(wheel) - 1

c = input("Type a word: ").upper()
key = int(input("Key: "))

encrypted = ''


for x in c:
    f = wheel.find(x) + key 
    if x == " ":
        encrypted = encrypted + " "
    if f > wlen:
        f1 = f - wlen - 1
        encrypted = encrypted + wheel[f1] 
    if f < wlen:
        encrypted = encrypted + wheel[f]

print(encrypted)

2 个答案:

答案 0 :(得分:9)

-8可以通过以下方式表示(我将使用字节表示形式

8  = 00001000
~8 = 11110111
-8 = 11111000 (~8 + 1)

在二补数表示中的-8等于tp ~8 + 1

所以-8等于11111000,而7等于00000111

11111000
&
00000111
========
00000000

即二进制AND操作产生错误结果。

答案 1 :(得分:0)

7用二进制表示为00000111-8以二进制形式表示为11111000。按位与运算对每个位执行“与”运算:

00000111
&
11111000
=
00000000

因此,如果条件为假。