位运算符

只谈情不闲聊 提交于 2020-01-18 05:05:16

按位与(&)

通常用于二进制的取位操作。相同位的两个数字都为1,则为1;若有一个不为1,则为0.
例如一个数&1的结果就是取二进制的最末位。这可以用来判断一个整数的奇偶,最末位为1表示该数为奇数。

按位或(|)

相同位只要一个为1即为1。通常用于二进制特定位上的无条件赋值,例如一个数|1的结果就是把二进制最末位强行变成1.如果需要把二进制最末位变成0,对这个数|1之后再减一就可以了,其实际意义就是把这个数强行变成最接近的偶数。

按位异或(^)

相同位不同则为1,相同则为0。
两次异或同一个数最后结果不变,即(a^ b)^ b=a;

按位取反(~)

not运算的定义是把内存中的0和1全部取反。

移位运算符

(1)移位运算符组成的表达式也属于算数表达式,其值为算数值。
(2)左移运算符是将一个二进制的操作数按指定移动的位数向左移动,移出位被丢弃,右边移出的空位一律补0.右移运算是将一个二进制位的操作数按指定移动的位数向右移动,移除位被丢弃,左边移出的空位一律补0,或者补符号位。
(3)在移位运算时,byte、short和char类型移位后的结果会变成int类型,规定实际移动的次数是移动次数和32的余数,也就是移位33词和移位1次得到的结果相同。
注意:如果是负数,在左侧填充的值就是1而不是0
(4)负数的二进制:

  • 取负数的绝对值,将其转化成二进制字节形式。
  • 将源码取反(0的变成1,1的变成0),得到反码
  • 反码加一得到补码。补码就是负数在计算机中的二进制表示方法。
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!