首页 > 其他 > 详细

第二章:08运算符[位运算符]

时间:2019-06-12 09:32:50      阅读:125      评论:0      收藏:0      [点我收藏+]
①位运算符
技术分享图片

 

<<:左移    左边最高位丢弃,右边补齐0

3 << 2; //3*2^2 = 3*4 = 12; //<< 把<<左边的数据乘以2的移动次幂

计算出3的二进制:11    

      00000000 00000000 00000000 00000011

  (00)000000 00000000 00000000 0000001100 //2**2*2+2*2

③>>:右移    最高位是0,左边补齐0;最高为是1,左边补齐1

-24 >> 2

  计算出-24的二进制:11000

      原码:10000000 00000000 00000000 00011000

      反码:11111111 11111111 11111111 11100111

      补码:11111111 11111111 11111111 11101000

           11111111 11111111 11111111 11101000

           1111111111 11111111 11111111 111010右移之后的补码 最高为是1,左边补齐1

      补码:1111111111 11111111 11111111 111010

      反码:1111111111 11111111 11111111 111001

      原码:1000000000 00000000 00000000 000110

      结果:-6

 

>>>:无符号右移 无论最高位是0还是1,左边补齐0

-24 >>> 2

      计算出24的二进制:11000

      原码:10000000 00000000 00000000 00011000

      反码:11111111 11111111 11111111 11100111

      补码:11111111 11111111 11111111 11101000

           11111111 11111111 11111111 11101000

           0011111111 11111111 11111111 111010

      结果:

 

位运算符(要做位运算,首先要把数据转换为二进制)

&[有0则0]

int a = 3;

int b = 4;

3的二进制:11

         00000000 00000000 00000000 00000011

4的二进制:100

         00000000 00000000 00000000 00000100

&位与运算:有0则0。

         00000000 00000000 00000000 00000011

        &00000000 00000000 00000000 00000100

      -----------------------------------

         00000000 00000000 00000000 00000000

结果是:0 

⑥|[有1则1]

int a = 3;

int b = 4;

3的二进制:11

         00000000 00000000 00000000 00000011

4的二进制:100

         00000000 00000000 00000000 00000100

|位或运算:有1则1。

        00000000 00000000 00000000 00000011

       |00000000 00000000 00000000 00000100

        -----------------------------------

        00000000 00000000 00000000 00000111

结果是:7

⑦^[相同则0,不同则1]

int a = 3;

int b = 4;

3的二进制:11

         00000000 00000000 00000000 00000011

4的二进制:100

         00000000 00000000 00000000 00000100

^位异或运算:相同则0,不同则1。

        00000000 00000000 00000000 00000011

       &00000000 00000000 00000000 00000100

        -----------------------------------

        00000000 00000000 00000000 00000111

结果是:7

⑧^的特点:一个数据对另一个数据位异或两次,该数本身不变。

int a = 10;

int b = 20;

System.out.println(a ^ b ^ b); //10

System.out.println(a ^ b ^ a); //20

⑨~[:0变1,1变0]

int a = 3;

int b = 4;

3的二进制:11

        00000000 00000000 00000000 00000011

4的二进制:100

        00000000 00000000 00000000 00000100

~按位取反运算符:0变1,1变0

        00000000 00000000 00000000 00000011

       ~11111111 11111111 11111111 11111100 (补码)

   补码:11111111 11111111 11111111 11111100

   反码:11111111 11111111 11111111 11111011

   原码:10000000 00000000 00000000 00000100

结果是:-4

 

 

 

?
 

 

?
 

 

?
 

 

?
 

 

?
 

 

?
 

 

?
 

 

?
 

 

?
 

 

?
 

第二章:08运算符[位运算符]

原文:https://www.cnblogs.com/Lucky-stars/p/11007656.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!