位运算的使用技巧
1、左移n位就是乘以2的n次方,右移n位就是除以2的n次方
2、flages特性的使用 https://www.cnblogs.com/netqq/p/9383144.html 总的来说是对于2^n 次方之间位运算和运算结果的还原和 匹配
例如1、2、4、8 这几个数字
10进制 | 2进制 |
1 | 00000001 |
2 | 00000010 |
4 | 00000100 |
8 | 00001000 |
16 | 00010000 |
举个例子:7=1|2|4 不信请看:00000001|00000010|00000100=00000111
举个例子:7&2=2 不信请看:00000111&00000010=00000010(=2) 这说明了什么,说明了 7这个值中含有 2这个值,用于确定一个数字中是否含有另外一个数字
举个例子:7^2=5 (=1|4) 不信请看:00000111^00000010=00000101 (=5) 这说明了什么,说明了 从7中去掉了2,这用于从一个数字中去掉一个数字
举个例子:5^2=7 不信请看:00000101^00000010=00000111(=7) 这说明了什么,互相异或后可以还原值
举个例子:7|8=15 不信请看:00000111|00001000=00001111(=15) 这说明了什么,|运算像是加法,^运算像是减法,&运算保留较小的数仅限于2^n次方之间
举个例子:2|4=6 不信请看 00000010|00000100=00000110 (=6) 这说明了什么,说明了一个用语言不太好描述的规则,一个非2^的偶数的计算规则,看表格找规律
14 | 8|4|2 |
12 | 8|4 |
10 | 8|2 |
6 | 4|2 |
18 | 16|2 |
20 | 16|4 |
发现一个规律:任何一个非2^n次方的数,都修要 2^(n-1) 的数参与| 运算,例如:9 需要8 |1参与,10需要8|2 ,11需要 8|4 ,13需要8|4|1 ,14需要8|4|2
3、准备中