只有对应的两个二进制位均为1时候,结果位才会是1,否则为0.
只要对应的两个二进制位有一个为1时,结果位就位1,否则为0。
对应二进制位相异(不相同)时,结果位1,否则为0.
根据上面分析得到如下规律
根据上面原理,加密算法中,可以使用使用异或运算符进行加密与解密,在二进制运算中,如果将一个明文的二进制位与密钥进行按位“异或”运算,将得到密文,将此密文与密钥再次进行按位“异或”运算,又可以得到明文。这样,只需编写一个函数便可以同时完成加密和解密两种运算。
把整数的各个二进制位全部左移n位,高位要放弃,低位补0,左移n位其实就是乘以2的n次方。
由于左移位是丢弃最高位,0补最低位,所以符号位也要丢弃,左移后的结果可能会改变正负性。
将9左移一位,最高位也就是红色的0出来,然后被舍弃,低位补0如下
计算出9左移一位后的值是
所以可以引申计算的时候,比如 9*6 就是等于 9<<3,而且位运算比较快。
注意一点,最高位如果是1倍丢弃,后面那一位是0,所以会影响正负性的。
把整数的各个二进制位全部右移n位,保持符号位不变,右移n位其实就是除以2的n次方。
为负数时,符号位为1,最高位是补0或者补1,这取决于编译系统的规定。
举例: 把9右移一位,如下,由于保持符号位不变,左边第二个是空,右边第一个被移出来
然后空出来的用符号位补齐,这里符号位是0,所以就用0补齐,如下
右移和左移也有规律
七,利用位操作来实现变量值的互换我们一般交换两个变量的值都是利用一个临时变量来存储中间的值
八.利用位运算判断奇偶性
一般用取模的方法来判断是否是奇偶数
位于运算,只有当对应的二进制数都是1的时候才是1,否则为0
//两数字相加 (不支持小数)
错误报告是按位的,先取得 E_ALL 的值(二进制)然后 再取得 E_NOTICE 的值(二进制),然后在通过 ~ 将其取反。