概述
1.算术运算符
** :幂,例如:x ** y,返回值为x的y次幂,2 ** 3,返回值为8
% :取余,例如:9 % 4 ,返回值为1
//:取整,例如:15 // 4,返回值为3
2.位运算符
位运算符把数字看作二进制来进行计算
&:按位与运算符:参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0
|:按位或运算符:只要对应的二个二进位有一个为1时,结果位就为1
~ :按位取反运算符:对数据的每个二进制位取反,即把1变为0,把0变为1
^ : 按位异或运算符:当两对应的二进位相异时,结果为1
<< :左移运算符:运算数的各二进位全部左移若干位,高位溢出,低位补0。右移运算符(>>):同理,高位补0,低位溢出。例如:1>>a,是将1右移a位,a>>1,是将a右移一位
以一个字节8位为例
原码:最高位为符号位,0代表整数,1代表负数
例如:5的原码为:0000 0101; -5的原码为1000 0101
反码:正数的反码与源码一致,负数的反码是对原码按位取反,只是最高位(符号位)不变
例如:5的反码为:0000 0101; -5的反码为1111 1010
补码:正数的补码与原码一致,负数的补码是该数的反码加1(原码符号位不变,其余位置取反,最后加1)
例如:5的补码为:0000 0101; -5的补码为1111 1011
正数取反:
1.原码 2.反码 3.补码 4.按位取反 5.原码(a.减1得反码 b.取反得原码)
负数取反:
1.原码 2.反码 3.补码(反码加1得补码) 4.按位取反 5.原码
a = 6 // 二进制为 0000 0110
b = 13 // 二进制为 0000 1101
c1 = a & b //位与 全为1,则结果位才为1, 0000 0100,输出为4
c2 = a | b //位或 有一个为1,则结果位为1, 0000 1111,输出为15
c3 = ~a //按位取反,第一步,将十进制数转化为二进制数:0 0110,
第二步,由于二进制数在内存中以补码形式存在,所以将第一步中的二进制数转化为补码:0 0110,
第三步,按位取反:1 1001[按位取反后变成负数(因为取反后第一位为1,代表负数)],
第四步,转为原码:1111(进行负数补码到原码的逆运算:a.第三步按位取反的值先减1得反码:1 1000, b.取反得原码:1 0111),
第五步,将第四步中的二进制转化为十进制,输出为-7
c4 = a ^ b // 异或 两个不同时,则结果位为1, 0000 1011,输出为11
c5 = a << 5 // 左移 a向左移5位, 1100 0000,高位溢出,低位补0,输出为192
c6 = a >> 5 // 右移 a向右移5位,输出为0,因为a = 6,二进制为110,只有最后三位,向右移动5位,全部溢出,所以输出为0
print(c1, c2, c3, c4, c5, c6,)
注:
可以简单地理解:
1)向左移动一位,乘以一次2,向左移动两位,乘以两次2;向右移动一位,除以一次2,向右移动两位,除以两次2
2)按位取反的结果为操作数的相反数减1
3.逻辑运算符
and :布尔与,x and y,如果x 为 False,则返回false,否则返回 y 的计算值
or:布尔或,x or y,如果 x 为true,则返回 x 的计算值,否则返回y的计算值
not: 布尔"非" - 如果 x 为 True,返回 False 。如果 x 为 False,它返回 True
a = 6
b = 13
c7 = a and b // a为true,返回b的值,13
c8 = a or b // a为true,返回a的值,6
c9 = not a // a为true,返回false
print(c7, c8, c9)
a = 0
c10 = a and b // a为false,返回a的值,0
c11 = a or b // a为false,返回b的值,13
c12 = not a // a为false,返回true
print(c10, c11, c12)
最后
以上就是健康黑猫为你收集整理的python运算符的全部内容,希望文章能够帮你解决python运算符所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复