栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

python-位运算

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python-位运算

python-位运算
  • 1.二进制
    • 1.1什么是二进制
    • 1.2有符号与无符号
    • 1.3原码反码补码
    • 1.3有符号与无符号
    • 1.4位运算
      • 1.4.1与运算(and &)
      • 1.4.2或运算(or |)
      • 1.4.3异或运算(xor ^)
      • 1.4.4非运算(单目运算符 not ~)
      • 1.4.5位运算(移动位)
    • 1.5二进制加法
  • 2.python中使用

1.二进制 1.1什么是二进制

二进制是由0和1组成,逢2进1。
而十进制是逢10进1
例如:1, 10, 101, 1010111这些都是二进制数。
十进制由0-9组成。
例如:0, 9, 5, 12, 58这些都是十进制数。
计算机只认识二进制,所有的运算都是通过二进制。我们现在用的一些编程语言在最后都会编译成二进制。二进制才是计算机的本质。

二进制十进制
11
102
113
1004
1015
1106
1117
10008
10019
1.2有符号与无符号

按照一个字节等于8位来计算1byte=8bit
无符号
是什么就是是什么

有符号
最高位是符号位:1(负数) 0(正数)

十进制二进制
-11000 0001
10000 0001
-101000 0001
1.3原码反码补码

而在二进制中,由三种形式分别为:原码,反码,补码

原码:
最高位符号位

反码:
正数:反码和原码相同
负数:符号位一定是1,其余位对原码取反。

补码:

正数:补码和原码相同
负数:符号位一定是1,反码+1

1.3有符号与无符号

按照一个字节等于8位来计算1byte=8bit
无符号
是什么就是是什么
1000 0001就是1000 0001

有符号
最高位是符号位:1(负数) 0(正数)

十进制二进制
-11000 0001
10000 0001
-101000 0001
1.4位运算

计算机不知道加法是什么,减法是什么,只知道以下这些操作。

1.4.1与运算(and &)

两个都为1,结果变为1

1011 0001
1101 1000

结果:1001 0000

1.4.2或运算(or |)

只要一个为1,结果变为1

1011 0001
1101 1000

结果:1111 1001

1.4.3异或运算(xor ^)

不相同的,则变为1

1011 0001
1101 1000

结果:0110 1001

1.4.4非运算(单目运算符 not ~)

0变1,1变0

1101 1000

结果:0010 0111

1.4.5位运算(移动位)

左移(<<)

0000 0001  # 所有二进制数向左移位,高位丢弃,低位补0。

# 结果
0000 0010  # 例如向左一位

右移( >>)

0000 0001  # 所有二进制数向右移位,低位丢弃,高位补0或1(符号位决定)

#结果
0000 0000  # 例如向右一位
1.5二进制加法

十进制:1+2
计算机运算过程:

先进行异或运算

0000 0001
0000 0010

结果:0000 0011

再进行与运算,如果得出的结果是:0000 0000,则最总结果为上一步的异或结果

0000 0001
0000 0010

结果:0000 0000

所以最总结果为0000 0011,十进制表示为3,1+2 就等于3

2.python中使用
a = 3
b = 4
print("a二进制表示:",bin(a))
print("b二进制表示:",bin(b))
print("n")

print("与运算")
print("a&b十进制结果:",a&b)
print("a&b二进制结果:",bin(a&b))
print("n")

print("或运算")
print("a|b十进制结果:",a|b)
print("a|b二进制结果:",bin(a|b))
print("n")

print("异或运算")
print("a^b十进制结果:",a^b)
print("a^b二进制结果:",bin(a^b))
print("n")

print("非运算")
print("~a二进制结果:",bin(~a))
print("~a十进制结果:",~a)
print("~b二进制结果:",bin(~b))
print("~b十进制结果:",~b)
print("n")

print("左移")
print("a<<1十进制结果:",a<<1)
print("a<<1二进制结果:",bin(a<<1))
print("b<<1十进制结果:",b<<1)
print("b<<1二进制结果:",bin(b<<1))
print("n")

print("右移")
print("a>>1十进制结果:",a>>1)
print("a>>1二进制结果:",bin(a>>1))
print("b>>1十进制结果:",b>>1)
print("b>>1二进制结果:",bin(b>>1))

运算结果:

a二进制表示: 0b11
b二进制表示: 0b100


与运算
a&b十进制结果: 0
a&b二进制结果: 0b0


或运算
a|b十进制结果: 7
a|b二进制结果: 0b111


异或运算
a^b十进制结果: 7
a^b二进制结果: 0b111


非运算
~a二进制结果: -0b100
~a十进制结果: -4
~b二进制结果: -0b101
~b十进制结果: -5


左移
a<<1十进制结果: 6
a<<1二进制结果: 0b110
b<<1十进制结果: 8
b<<1二进制结果: 0b1000


右移
a>>1十进制结果: 1
a>>1二进制结果: 0b1
b>>1十进制结果: 2
b>>1二进制结果: 0b10
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/589812.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号