1.位运算都是在二进制的基础上进行运算的,所以在位运算之前要先将两个数转成二进制。
2.进行位运算的两数,数据类型得一致
num := 9
fmt.Println(num&1)
//1001 & 0001 = 0001,实际将1自动补全为64位二进制
leetcode:191
3.位运算左移1位,等价于乘2。
例如十进制数5,左移一位成为50,相当于乘10。位运算将2进制数左移,位权是基于2的,所以相当于乘2。
Q:golang左移补0,而右移有算术右移和逻辑右移,那么上面的代码,num默认是int带符号数,采用的是算术右移还是逻辑右移?