广州建设银行官方网站,广东华迪工程建设监理公司网站,网站的栏目有什么名字,全国最大的外发加工网1. 为什么要学位运算 因为这是计算机内部运算的语言#xff0c;所以会非常快。 本人是因为学习算法经常遇见一些求二进制中的0和1的各种操作#xff0c;好多都不知道所以特此整理一下#xff0c;如有不对#xff0c;烦请指正。 2. 什么是位运算
程序中的所有数在计算机内存…1. 为什么要学位运算 因为这是计算机内部运算的语言所以会非常快。 本人是因为学习算法经常遇见一些求二进制中的0和1的各种操作好多都不知道所以特此整理一下如有不对烦请指正。 2. 什么是位运算
程序中的所有数在计算机内存中都是以二进制的形式储存的。位运算就是直接对整数在内存中的二进制位进行操作。比如and运算本来是一个逻辑运算符但整数与整数之间也可以进行and运算。举个例子6的二进制是11011的二进制是1011那么6 and 11的结果就是2它是二进制对应位进行逻辑运算的结果0表示False1表示True空位都当0处理。 来源百度百科
3. 位运算符与操作
3.1 按位与
//将数字化为二进制然后进行按位与
//1 0 0
//1 1 1
//0 1 0
//0 0 0
3 4
011
100
--------
0003.2 按位或 |
//将数字化为二进制然后进行按位或
//1 | 0 1
//1 | 1 1
//0 | 1 1
//0 | 0 0
3 | 4
011
100
--------
1113.3 异或运算^
//将数字化为二进制然后进行按位异或相同为0不同为1
//1 ^ 0 1
//1 ^ 1 0
//0 ^ 1 1
//0 ^ 0 0
3 ^ 4
101
100
--------
001异或运算是我最近做算法题遇到的题意大概就是二进制表示形式只有一位不同。 这个时候就可以使用异或操作然后计算异或完后1的个数就可以知道他是不是一位不同。 leetcode 1238 leetcode 89 3.4 取反运算~
将该数的二进制形式取反如
4
100
~ 4
0113.5 左移操作
相等于对原数乘了2 的n次方 前面代表要移的数 后面代表要移几位
4
100
4 1
1000
8
4 2
10000
4 * 2 ^ n
163.6 右移操作
相等于对原数除了2 的n次方取整 前面代表要移的数 后面代表要移几位
4
100
4 1
010
2
4 2
001
4 / 2 ^ n
1以上有遇到算法题的我会进行标注持续更新