golang 位运算
运算说明: and运算&: 通常用于二进制的取位操作。一个数&1的结果就是取二进制的最末位。可以用来判断一个整数的奇偶。二进制最末位为0表示偶数,最末位为1表示奇数。 相同位的两个数字都为1,则结果为1,若有一个不为1,那么结果为0. or 运算 | : 通常用于二进制特定位上的无条件赋值。一个数 | 1的结果就是把二进制的最末未强行变成1.如果需要把二进制最末位变成0,需要对这个数进行 | 1之后再减1.实际意义是把这个数强行变成最接近 的偶数。 相同位只要一个为1即为1
xor运算 ^
^(XOR) 在go语言中XOR是作为二元运算符存在的
但是如果是作为一元运算符出现,他的意思是按位取反。 1010的反码是0101: 解析: 1010在32位计算机存储为0000 1010 1.求补码 : 1010取反以后结果为 1111 0101 (在计算机中,首位为0代表正数,首位是1代表负数) 2. 求补码的逆: 先减1得:1111 0100 , 再取反(取反时符号位不变)得:0000 1011 ------计算结果为-11
XOR是不进位加法计算,也就是异或计算。0000 0100 + 0000 0010 = 0000 0110 = 6
异或的符号是^。按位异或运算,对等长二进制模式按位或二进制数的每一位执行逻辑按位异或操作. 操作的结果是如果某位不同则该位为1,否则该位为0.
xor运算的逆运算是它本身,也就是说两次异或同一个数最后结果不变,即(a xor b) xor b = a。
相同位不同则为1,相同则为0。
&^ 位清空 &^ 位清空 (AND NOT) 和被运算变量位置有关系 左移<< 乘以2的n次方 右移>> 除以2的n次方 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |