关于NOIP初赛中负数的运算

来源:百度知道 编辑:UC知道 时间:2024/06/15 22:04:12
比如-1 and 1 , -1 or 1 , -1 xor 1 这样的是如何进行计算的?
要的是方法不是结果,教会我有+分~

and or 和xor 都是逻辑运算符..(是吧)
方法就是把运算的2个数先换成2进制 (会吧)
比如 a 运算 b 换成
a1a2a3a4a5a6...an(2)
b1b2b3b4b5b6...bn(2)
这里ai bi显然只可能为0或1
如果是 and (且)
就进行这样的计算
如果ai=0 bi=0 ai and bi=0
如果ai=1 bi=0 ai and bi=0
如果ai=0 bi=1 ai and bi=0
如果ai=1 bi=1 ai and bi=1

如果是 or(或)
就进行这样的计算
如果ai=0 bi=0 ai or bi=0
如果ai=0 bi=1 ai or bi=1
如果ai=1 bi=0 ai or bi=1
如果ai=1 bi=1 ai or bi=1

如果是 xor (异或)
就进行这样的计算
如果ai=0 bi=0 ai xor bi=0
如果ai=1 bi=0 ai xor bi=1
如果ai=0 bi=1 ai xor bi=1
如果ai=1 bi=1 ai xor bi=0

不知道你是否了解了?

最近几年没看到NOIP真题里有负数,已经不考这个负数逻辑运算了。

负数运算,首先要确定是几位二进制数运算,然后负数用补码表示。

如:八位二进制中,-1用11111111表示,1是00000001表示
-1 and 1=11111111 and 00000001 = 00000001
-1 or 1=11111111 or 00000001 = 11111111
-1 xor 1=11111111 xor 00000001 = 11111110

看一下真值表