位运算
位运算:按位与、按位或、按位异或、按位左移、按位右移-CSDN博客
位运算用来对二进制位进行操作,包括:按位与(&)、按位或(|)、按位异或(^)、按位取反(~)、按位左移(<<)、按位右移(>>) 。
(1)按位与(&)
1. 应用范围:必须在整数范围内进行
运算方法:将整数从十进制转化为二进制数,上下比较,有零则零 ,两个都是 1 才是 1。
运算编码:补码
输出方式:整形表达式计算使用在内存中的是补码,打印和看到的都是源码。
1 2 3 4 5 6 7 8 9 10 11 12 13
| // int 为整型4个字节有32个bit位 int a = 3 ; // 00000000 00000000 00000000 000000011 正数,源码=反码=补码 int b = -5 ; // 10000000 00000000 00000000 000000101 -5的源码 // 11111111 11111111 11111111 111111010 -5的反码 // 11111111 11111111 11111111 111111011 -5的补码 int c = a & b ; //按位与:上下比较,有零则零,两个都为 1 才是 1 // 00000000 00000000 00000000 00000011 3的补码 // 11111111 11111111 11111111 11111011 -5的补码 最终结果// 00000000 00000000 00000000 00000011 ----(3)整数,源码=反码=补码
|
(2)按位或(|)
应用范围:必须在整数范围内进行
运算方法:上下比较有 1 则为 1,两个都是 0 才是 0
运算编码:补码
输出方式:整形表达式计算使用在内存中的是补码,打印和看到的都是源码。
(3)按位异或(^)
应用范围:必须在整数范围内进行
运算方法:上下比较,相同为 0 ,相异为 1
运算编码:补码
输出方式:整形表达式计算使用在内存中的是补码,打印和看到的都是源码。
(4)按位左移(<<)
应用范围:必须在整数范围内进行
运算方法:把二进制数向左移动一位,左边溢出的丢弃,右边补零
编码运算:补码
输出方式:整形表达式计算使用在内存中的是补码,打印和看到的都是源码。
1 2 3
| int a = 4 ; // 00000000 00000000 00000000 00000100,正数,源码=反码=补码 int b = a << 1 ; // 把a左移一位,左边丢弃,右边补零 // 00000000 00000000 00000000 00001000 ----(8)
|
(5)按位右移(>>)
应用范围:必须在整数范围内进行
运算方法:把二进制数向右移动一位,右边丢弃,左边补原符号位
编码运算:补码
输出方式:整形表达式计算使用在内存中的是补码,打印和看到的都是源码。
1 2 3 4 5 6 7 8
| int a = -4 ; // 10000000 00000000 00000000 00000100 负数,源码 // 11111111 11111111 11111111 11111011 -4的反码 // 11111111 11111111 11111111 11111100 -4的补码 int b = >> 1 ; // 把b向右移动一位,右边丢弃,左边补原符号位 // 11111111 11111111 11111111 11111110 负数,补码 // 11111111 11111111 11111111 11111101 反码 // 10000000 00000000 00000000 00000010 源码----(-2)
|
此时我们可以发现一个整数,左移有乘2的效果,右移有除二的效果。
算术运算符.py
除法运算符:/
将第一个操作数除以第二个操作数,结果为浮点数
整除运算符://
将第一个操作数除以第二个操作数并向下取整
1 2 3 4
| a=10 b=3 c=a//b print(c)
|
find函数.py
1 2 3 4 5 6 7 8 9 10 11 12
| str.find(str,beg=0,end=len(string))
参数 str---a指定检索的字符串 beg---开始检索,默认为0 end---结束检索,默认为字符串的长度
for example str = "abcdefa" print(str.find("a")) # 从下标0开始,查找在字符串里第一个出现的子串,返回结果 print(str.find("a",1)) # 从下标1开始,查找在字符串里第一个出现的子串:返回结果6 print(str.find("7"))# 查找不到返回-1
|
数组元素个数定义.py
结构体
_BYTE:一个字节
_WORD:两个字节
_DWORD:四个字节
_QWORD:八个字节
类型含义
db:一个字节 dw:两个字节 dd:四个字节 dq:八个字节