位运算符相关与详解

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

记录位运算符的使用与理解相关


一、位运算符类型

位运算符种类
位运算符是直接对二进制进行计算的运算

二、运算细节

运算细节

三、使用步骤

前请说明:

位运算:>>,>>>,<<,&,|,^,~

想要进行位运算,就得先知道二进制,其次,计算机中数据参与运算的都是补码

1.&,|,^,~使用理解与举例

&,|,^,~使用举例:

public class OptPositionDemo1 {
    public static void main(String[] args) {

        int x = 3;
        int y = 4;

        System.out.println(x&y); //0
        System.out.println(x|y); //7
        System.out.println(x^y); //7
        System.out.println(~x);  //-4

    }
}

运行结果:
0
7
7
-4

	3的二进制:11
	4的二进制:100
  	3的原码、反码、补码:00000000 00000000 00000000 00000011
  	4的原码、反码、补码:00000000 00000000 00000000 00000100
  	      &位与运算:有0则0
      00000000 00000000 00000000 00000011
    &
      00000000 00000000 00000000 00000100
   -----------------------------------------
      00000000 00000000 00000000 00000000
   结果是0


  |位或运算:有1则1
      00000000 00000000 00000000 00000011
    |
      00000000 00000000 00000000 00000100
  ------------------------------------------
      00000000 00000000 00000000 00000111
   结果是7

  ^位异或运算:相同则0,不同则1
      00000000 00000000 00000000 00000011
    ^
      00000000 00000000 00000000 00000100
  ------------------------------------------
      00000000 00000000 00000000 00000111
   结果是7

  ~位取反:0变成1,1变成0
       00000000 00000000 00000000 00000011
      ~
     --------------------------------------
       11111111 11111111 11111111 11111100

    补码求原码:
          符号位                    数值位
    补码:  1              1111111 11111111 11111111 11111100
    反码:  1              1111111 11111111 11111111 11111011
    原码:  1              0000000 00000000 00000000 00000100
    结果是-4

2.>>,>>>,<<使用理解与举例

优先说明:
<<:左移:向左移动,最高位丢弃,右边补0
>>:右移:向右移动,最高位是0,左边补0,最高位是1,左边补1
>>>:无符号右移:向右移动,无论最高位是0还是1,右边都用0补齐

public class OptPositionDemo2 {
    public static void main(String[] args) {
        System.out.println(3 << 2);
        System.out.println(24 >> 2);
        System.out.println(24 >>> 2);

        System.out.println(-24>>2);
        System.out.println(-24>>>2);
    }
}

运行结果:
12
6
6
-6
1073741818

分析:
	1、计算出3的二进制:11
     3的二进制补码:
                   00000000 00000000 00000000 00000011
               (00)000000 00000000 00000000 0000001100
    结果是:12
    
    2、计算出24的二进制:11000
    24的二进制的补码:
                   00000000 00000000 00000000 00011000
                   0000000000 00000000 00000000 000110(00)
    结果是:6


    3、计算出24的二进制:11000
    24的二进制的补码:
                   00000000 00000000 00000000 00011000
                   0000000000 00000000 00000000 000110(00)
    结果是:6

    4、计算出24的二进制:11000
       原码: 10000000 00000000 00000000 00011000
       反码: 11111111 11111111 11111111 11100111
       补码: 11111111 11111111 11111111 11101000

       -24的补码:
              11111111 11111111 11111111 11101000
              11111111 11111111 11111111 11111010(00)
       补码:11111111 11111111 11111111 11111010
       反码:11111111 11111111 11111111 11111001
       原码:10000000 00000000 00000000 00000110
       结果是:-6

   5、 计算出24的二进制:11000
       原码: 10000000 00000000 00000000 00011000
       反码: 11111111 11111111 11111111 11100111
       补码: 11111111 11111111 11111111 11101000

       -24的补码:
              11111111 11111111 11111111 11101000
              0011111111 11111111 11111111 111010(00)
      结果是:1073741818

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值