其他分享
首页 > 其他分享> > 位运算

位运算

作者:互联网

程序中的所有数在计算机内存中都是以二进制的形式储存的。位运算就是直接对整数在内存中的二进制位进行操作。

 

位:数据存储的最小单位。在计算机中的二进制数系统中,位,简记为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