Python代码规范和计算机中的位运算
作者:互联网
1,代码规范
1.1名称
-
文件夹:小写&小写下划线连接
-
文件:小写&小写下划线连接
-
变量
-
全局变量,大写&大写下划线连接
-
局部变量,小写&小写下换线连接
-
1.2注释
文件夹下的注释:创建__init__.py
,在里面写上此文件夹的作用的注释
1.3,todo注释
for i in range(10): pass #TODO v1版本未实现,后续在v1.n版本中更新
该功能主要是注释版本信息和项目开发进度
1.4 条件嵌套
写条件语句一定要想办法减少嵌套的层级(最好不超过3层)
1.5,简单逻辑先处理
1.6,循环
尽量少循环,提高代码效率
1.7 ,变量和值
变量和值等号前后要注意空格
2,补充
2.1pass作用
如果在条件中没有代码,可以用pass来使得代码更加完整
2.2,is
和==
的区别
-
==
用于比较两个值是否相等 -
is
用于表示内存地址是否一致
2.3 位运算
位运算就是对二进制的操作
-
&
,与(都为1)a = 60 # 60 = 0011 1100 不够8位会在前面补0 b = 13 # 13 = 0000 1101 #a,b进行计算时,如果a,b二进制数相同位置都为1,则结果为1,否则为0 c = a & b # 12 = 0000 1100
-
|
,或(只要有一个为1)a = 60 # 60 = 0011 1100 b = 13 # 13 = 0000 1101 #a,b进行计算时,如果a,b二进制数相同位置只要有一个为1,则结果为1,否则为0 c = a | b # 61 = 0011 1101
-
^
,异或(值不同)a = 60 # 60 = 0011 1100 b = 13 # 13 = 0000 1101 #a,b进行计算时,如果a,b二进制数相同位置的值不同,则结果为1,否则为0 c = a ^ b # 49 = 0011 0001
-
~
,取反a = 60 # 60 = 0011 1100 表示对二进制数相同位置的值取反 c = ~a; # -61 = 1100 0011
-
<<
,左移动a = 60 # 60 = 0011 1100 #表示让a的二进制数往左移动两位,不够8位用0补足 c = a << 2; # 240 = 1111 0000
-
>>
,右移动a = 60 # 60 = 0011 1101 #表示让a的二进制数往右移动两位,不够8位用0补足 c = a >> 2; # 15 = 0000 1111
开发中,二进制的位运算几乎很少使用,在计算机底层 或 网络协议底层用的会比较多,例如:
-
计算 2**n
2**0 1 << 0 1 1 #2的0次方在计算机中表示1往左移0位,结果得到1,转换为十进制结果为1 2**1 1 << 1 10 2 #2的1次方在计算机中表示1往左移1位,结果得到10,转换为十进制结果为2 2**2 1 << 2 100 4 #2的2次方在计算机中表示1往左移2位,结果得到100,转换为十进制结果为4 2**3 1 << 3 1000 8 #2的3次方在计算机中表示1往左移3位,结果得到1000,转换为十进制结果为8 ...
-
计算一个数的一半【面试题】
v1 = 10 >> 1 #给一个数,计算这个数的一半,在计算机中表示左移一位,得到这个数的一半 print(v1) # 值为5
-
网络传输数据,文件太大还未传完(websocket源码为例)。
第1个字节 第2个字节 ... 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-------+-+-------------+-------------------------------+ |F|R|R|R| opcode|M| Payload len | Extended payload length | |I|S|S|S| (4) |A| (7) | (16/64) | |N|V|V|V| |S| | (if payload len==126/127) | | |1|2|3| |K| | | +-+-+-+-+-------+-+-------------+ - - - - - - - - - - - - - - - + FIN位置是0,表示这是一部分数据,后续还有数据。 FIN位置是1,表示这是最后数据,已发送完毕。
# 例如:接收到的第一个字节的值为245(11110101),让v的二进制和 1000 0000 做 & 与运算。 v = 245 # 245 11110101 # 128 10000000 10000000 #FIN位置为1,表示这是最后数据,已经发送完毕 data = v & 128 if data == 0: print("还有数据") else: print("已完毕")
标签:13,0000,运算,0011,Python,代码,60,二进制,1100 来源: https://blog.csdn.net/weixin_48737456/article/details/122182418