java基础知识之位运算符

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_33863843/article/details/84202261

       位运算符除按位与和按位或运算符外,其他只能用于处理整数的操作数,。位运算是完全针对位方面的操作。整型数据在内存中以二进制的形式表示,如int型变量7的二进制表示是00000000 00000000 00000000 00000111。

       左边最高位是符号位,最高位是0表示整数,若为1则表示负数,负数采用补码表示,如-8的二进制表示为 11111111 11111111 11111111 11111000 。这样就可以对整数数据进行按位运算

1,“按位与”运算

       “按位与“运算的运算符为”&“,为双目运算符,”按位与“运算的运算法则是:如果两个整形数据a,b对应位都是1,则结果位才是1,否则是0,如果两个操作数的精度不同,则结果的精度与精度高的操作数相同。

eg:    此处只写后八位

          000 001 01   -->a

          000 001 10   -->b

          000 001  00  -->result

2,“按位或”运算

       "按位或“运算的运算符为“1”,为双目运算符。“按位或”运算的运算法则是:如果两个操作数对应位都是0,则结果位才是0,否则是1。如果两个操作数的精度不同,则结果的精度与精度高的操作数相同。

eg:     000 001 01   -->a

          000 001 10   -->b

          000 001 11 -->result

3,”按位取反“运算

       “按位取反“运算也称“按位非“运算,运算符为”~“,为单目运算符,”按位取反“就是将操作数二进制中的1修改为0,0修改为1。

eg:     000 001 01   -->a

          111 110 10 -->result

4,“按位异或”运算

      “按位异或“运算的运算符为"^",为双目运算符。“按位异或”运算的运算法则是:当两个操作数的二进制表示相同(同为1或者同为0)时,结果为0,否则结果为1。如果两个操作数的精度不同,则结果的精度与精度高的操作数相同。

eg:     000 001 01   -->a

          000 001 10   -->b

          000 000 11 -->result

5,移位操作

      除上述运算符外,还可以对数据按二进制位进行位移操作。位移操作运算符有以下三种:

      <<: 左移

      >>: 右移

      >>>: 无符号右移

     左移:就是将左边对操作数在内存中对二进制数据左移右边操作数指定的位数,左边移空的部分补0。

     右移:如果最高位是0,左移空的位就填入0,如果最高位是1,右移空的位就填1

     无符号右移,无论最高位是1还是0,左侧被移空的高位都填0

移位运算符适用的数据类型有:byte,short,int,long,char

移位可以实现整数除以或者乘以2^n的效果,例如y<<2 与y*4的结果相同;y>>1的结果与y/2的结果相同,总之,一个数左移n位,就是这个数乘以2^n;一个数右移n位就是将蒸熟除以2^n。

猜你喜欢

转载自blog.csdn.net/qq_33863843/article/details/84202261