python运算符: ^ <<

本文深入探讨了二进制运算中的异或(^)、按位与(&amp;)、按位或(|)、按位取反(~)及左移(&lt;&lt;)运算的原理与应用。通过具体实例,详细讲解了正数与负数在二进制下的表示方法,以及在进行异或运算时如何处理负数的补码转换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

^表示二进制异或运算

如下表(相同为0,不同为1),显然异或运算作为一种逻辑运算,有对称性(a^b=b^a):

 从左至右进行比对,不足为则用0补缺:

对于 ^ 两边的数字都是正数则直接对比计算即可

例如:

7 ^ 10
二进制:0111 ^ 1010
输出为:1101=13

9 ^ 8
二进制:1001^1000
输出为:0001即为1

若一边或两边出现负数,则需要进行负数的转码

转码原理:负数原码与补码之间相互转换

例:

-1 ^ -32

-1    二进制为 -1

而-1在计算机中被这样转换

原码:1000 0001

反码:1111 1110

补码:1111 1111

-32  二进制为 -100000

而-1在计算机中被这样转换

原码:1010 0000

反码:1101 1111

补码:1110 0000

-1  ^  -32  =>  31
# 1111 1111 ^ 1110 0000 =>  00011111  =>31

<< 左移动运算符:

运算数的各二进位全部左移若干位,由 << 右边的数字指定了移动的位数,高位丢弃,低位补0;

-1 << 5  => -100000
#-100000 = -32

另还有>>右移动运算符,原理一致

其他运算符

a = 0011 1100

b = 0000 1101

-----------------

a&b = 0000 1100

a|b = 0011 1101

a^b = 0011 0001

~a  = 1100 0011

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值