前言
计算机发明之初就是为了计算数字,编程语言就是为了更好的利用计算机进行数字计算的。python作为一个偏向于运算的编程语言,自然也少不了数字运算。
本次我们将学习python中关于二进制的运算的部分。
前提摘要
1.十进制转二进制
函数介绍:bin()函数用于将十进制数字转化为二进制数字
用法:bin(十进制数字)
例如计算十进制100的二进制数据
bin(100)
结果
'0b1100100'
#python中二进制的表现格式为 0b 加二进制值。
#比如二进制 00101100 在python的表现格式就为 0b101100,
#前置0可以省略,就是二进制从第一位开始的连续的0可以省略
#比如二进制 00101100,可以缩写为 101100
2.二进制转十进制
函数介绍:int()函数用于将十进制数字转化为二进制数字
用法:int("二进制数据",base=数据类型)
例如计算二进制'0b1100100'的十进制数据
int('0b1100100',base=2)
结果
100
讲解
下面我将介绍两个二进制数字之间的运算符号:
1 .与运算(符号:& )
解释:都为1才是1。也可以理解为都1才行,不然就是0。
举个例子:
a = 240 #十进制的240的二进制数为 11110000
b = 139 #十进制的139的二进制数为 10001011
print (a & b) #打印 a 与 b的结果
执行结果:
128
运算过程:
1. 首先计算机会将 a 和 b 的数字转化为二进制,我们把他们依次列出来
a = 11110000
b = 10001011
2.我们把这两个数字以每位对齐的形式列出来
1 1 1 1 0 0 0 0 --------------------a
1 0 0 0 1 0 1 1 --------------------b
3.比较 a 和 b 中相同的部分,并将相同的部分列出来,不同的部分用0代替
1 0 0 0 0 0 0 0 --------------------c,这个就是 a 和 b 与运算得出的结果
4.把结果换算成为常见的十进制
int('0b10000000',base=2) >>> 128 #得到数字128
5.所以 a 与 b 的结果是:128
2 .或运算(符号:| )
解释:只要有一个为1就是1。也可以理解为有1为1,否则为0
举个例子:
a = 240 #十进制的240的二进制数为 11110000
b = 139 #十进制的139的二进制数为 10001011
print (a | b) #打印 a 与 b的结果
执行结果:
251
运算过程:
1. 首先计算机会将 a 和 b 的数字转化为二进制,我们把他们依次列出来
a = 11110000
b = 10001011
2.我们把这两个数字以每位对齐的形式列出来
1 1 1 1 0 0 0 0 --------------------a
1 0 0 0 1 0 1 1 --------------------b
3.比较 a 和 b 中为1的部分,并将为1的部分列出来,不为1的部分用0代替。
1 1 1 1 1 0 1 1 --------------------c,这个就是 a 和 b 或运算得出的结果
4.把结果换算成为常见的十进制
int("0b11111011",base=2) >>> 251 #得到数字251
5.所以 a 或 b 的结果是:251
3 .异或运算(符号:^)
解释:当数字不同时才为1,否则为0
举个例子:
a = 240 #十进制的240的二进制数为 11110000
b = 139 #十进制的139的二进制数为 10001011
print (a ^ b) #打印 a 与 b的结果
执行结果:
123
运算过程:
1. 首先计算机会将 a 和 b 的数字转化为二进制,我们把他们依次列出来
a = 11110000
b = 10001011
2.我们把这两个数字以每位对齐的形式列出来
1 1 1 1 0 0 0 0 --------------------a
1 0 0 0 1 0 1 1 --------------------b
3.比较 a 和 b 中不同的部分,并将不同的部分写为1,相同的部分用0代替。
0 1 1 1 1 0 1 1 --------------------c,这个就是 a 和 b 异或运算得出的结果
4.把结果换算成为常见的十进制
int("0b01111011",base=2) >>> 123 #得到数字123
5.所以 a 异或 b 的结果是:123
接下来我将介绍单个二进制数的运算:
- 左位移运算(符号:<<)
解释:将二进制数字整体往左移动,你可以理解为往结尾出添加0
举个例子:
a = 240 #十进制的240的二进制数为 11110000
print (a << 2) #打印 a 左位移两位的结果
执行结果:
960
运算过程:
1. 首先计算机会将 a 的数字转化为二进制,我们以每位对齐的形式列出来
1 1 1 1 0 0 0 0 --------------------a
2.将数字整体左位移,结尾处用0补充,你可以理解为在结尾处添加0
1 1 1 1 0 0 0 0 0 0 --------------------c,这个就是 a 左位移两位的结果
3.把结果换算成为常见的十进制
int("0b1111000000",base=2) >>> 960 #得到数字960
4.所以 a 左位移两位的结果是:960
- 右位移运算(符号:>>)
解释:将二进制数字整体往右移动,你可以理解为从末尾处删除数字
举个例子:
a = 240 #十进制的240的二进制数为 11110000
print (a >> 2) #打印 a 右位移两位的结果
执行结果:
60
运算过程:
1. 首先计算机会将 a 的数字转化为二进制,我们以每位对齐的形式列出来
1 1 1 1 0 0 0 0 --------------------a
2.将数字整体右位移,你可以理解为从末尾处开始删除数字
1 1 1 1 0 0 --------------------c,这个就是 a 右位移两位的结果
3.把结果换算成为常见的十进制
int("0b111100",base=2) >>> 60 #得到数字60
4.所以 a 右位移两位的结果是:60