【认证习题讲解】and的逻辑运算
如下代码,c的值为?
a=1:b=-1
c=a and b
A.1 B.-1 C.-2 D.0 |
>>疑问:
有遇到一些同学,在参加认证考试的时候会遇到疑问。“and”的运算,“1 and -1” 等同于 “True and True",结果为”真“。
根据咱们”and“的逻辑运算口诀”有假则假“,两个都为”真“的时候,”and“的结果才是”真“。那答案看起来ABC都是正确的呀??
>>解惑:
实则不然。逻辑运算的时候,我们不是直接转换成bool值来计算的,而是通过二进制来换算。
>>>>二进制知识拓展
二进制是计算技术中广泛采用的一种数制。二进制数据是用0和1两个数码来表示的数。它的基数为2,进位规则是“逢二进一”,借位规则是“借一当二。 二进制就是等于2时就要进位。16位的二进制,最左边一位为符号位,正数为0,负数为1。 注:负数的二进制,以原码的补码形式表达。 即负数先表达成二进制,除了符号位外全部取反,再加1。 取反的意思是:1变成0,0变成1。
正数的二进制 | 除符号位外先取反 负数的反码 | 取反后加1 负数的二进制 | 0=0000000000000000 | 0=0000000000000000 | 0=0000000000000000 | 1=0000000000000001 | -1=1111111111111110 | -1=1111111111111111 | 2=0000000000000010 | -2=1111111111111101 | -2=1111111111111110 | 3=0000000000000011 | -3=1111111111111100 | -3=1111111111111101 | 4=0000000000000100 | -4=1111111111111011 | -4=1111111111111100 | 5=0000000000000101 | -5=1111111111111010 | -5=1111111111111011 | 6=0000000000000110 | -6=1111111111111001 | -6=1111111111111010 | 7=0000000000000111 | -7=1111111111111000 | -7=1111111111111001 | 8=0000000000001000 | -8=1111111111110111 | -8=1111111111111000 | 9=0000000000001001 | -9=1111111111110110 | -9=1111111111110111 |
and加法有四种情况:0 进位为1
0 and 0 = 0 | 0 and 1=0 | 1 and 0=0 | 1 and 1=1 |
|
>>解题步骤
a=1: 换算成二进制为 a=0000000000000001
b=-1:换算成二进制为:负数在计算机中的二进制,除符号为外先取反,在加1。
b(加上符号位1)=1000000000000001
b(除符号位外再取反) =1111111111111110
b(再加1)=1111111111111111
c=a and b: a与b的二进制值进行”and“运算
c=0000000000000001,换算成十进制值则为”1“
故答案为:1
>>思路拓展
同理,再拓展一题:a=1,b=2,c=a and b
解题:a=0000000000000001,b=0000000000000010,c=a and b=0000000000000000,即c的值为0
>>>按键学院免费交流群:376122403