我只是在尝试一个简单的if语句,它无法按预期工作。我是否有错误或者我不了解if语句的功能?
代码是:
i = 50
n = 6
if i >> n:
print("I is greater")
elif i << n:
print("I is lesser")
elif i == n:
print("I and N are same")
else:
print("no result")
即使我输入更大或相等的值,输出也将是“我较小”。请帮助我了解其工作原理。
答案 0 :(得分:5)
<<
和>>
是bitshift operators,而不是比较运算符。 50 >> 6
是0
,因此if语句因为是falsy而被评估为false。 50 << 6
为3200,因此if语句的值为truthy,因此其值为true。
此代码可能以您“期望”它的方式起作用
i = 50
n = 6
if i > n:
print("I is greater")
elif i < n:
print("I is lesser")
elif i == n:
print("I and N are same")
else:
print("no result")
答案 1 :(得分:0)
“ <<”是按位左移。在某种程度上,它等于右操作数乘以2。
“ >>”是按位右移。在某种程度上,它等于将正确的操作数除以2。
在您的示例中,“ 50 << 6”表示左移50,它是二进制的110010(1 * 32 + 1 * 16 + 0 * 8 + 1 * 2 + 0 * 1 = 50),六次。因此,它变为110010000000 =3200。非零数字(例如3200)在python中计算为True。
同样,“ 50 >> 6”表示左移110010左移6次。左移一次后变为11001,左移两次后变为1100 ...,并左移六次后变为0。
在python中,零数字的值为False。