位运算
作者:互联网
程序中的所有数在计算机内存中都是以二进制的形式储存的。位运算就是直接对整数在内存中的二进制位进行操作。
位:数据存储的最小单位。在计算机中的二进制数系统中,位,简记为b,也称为比特,每个0或1就是一个位。
例如7在内存中的存储形式是 00000111
按位与(&):将参与运算的两个数分别对应的二进位相与,只有对应的两个二进位都为1时,结果位才为1。参与运算的两个数均以补码形式出现。(补码:正数的补码为它本身,负数的补码是它的反码加1,即将二进位的符号位以外的位的0变为1,1变为0,再加1)
例如: 23&17 转为二进制 00010111&00010001 按位与得 00010001 即17
按位或(|):将参与运算的两个数分别对应的二进位相或,只要对应的两个二进位有一个以上为1时,结果位就为1。参与运算的两个数均以补码形式出现。
例如: 15|16 转为二进制 00001111|00010000 按位或得 00011111 即31
按位异或(^): 将参与运算的两个数分别对应的二进位相异或,当对应的两个二进位有且只有一个为1时,结果位才为1。参与运算的两个数均以补码形式出现。
例如:21^27 转为二进制 00010101^00011011 按位异或得 00001110 即14
左移位(<<):将一个运算对象的各二进制位全部左移若干位(左边的二进制位丢弃,右边补0)。
例如:60 << 2 表示将60左移两位,先将60转化为二进制 00111100 之后,左移两位得 11110000 即240。
右移位(>>):将一个运算对象的各二进制位全部右移若干位(正数左补0,负数左补1,右边丢弃)。
例如:60 >> 2 表示将60右移两位,先将60转化为二进制 00111100 之后,右移两位得 00001111 即15。
-7 >> 2 表示将-7右移两位,先将-7转化为二进制 11111001 之后,右移两位得 11111110 即 -2。
标签:右移,运算,二进制,补码,二进位,按位 来源: https://www.cnblogs.com/djh777/p/14288545.html