java位运算,逻辑运算

从结果上来看&&与&的结果是一样的, 如果左边为false,右边表达式不会执行,整体结果为false
从结果上来看||与|的结果是一样的, 如果左边为true, 右边表达式不会执行,整体结果为true

位运算符:针对二进制的值补码形式进行计算的
& | ^(相同为0,不同为1) ~ << >> >>>



    public static void main(String[] args) {
        byte a1 = 3;
        byte b1 = 4;

        System.out.println(a1 & b1);
        System.out.println(a1 | b1);
        System.out.println(a1 ^ b1);
        System.out.println(~ b1);
    }
}


    计算机中所有数据的运算都是采用补码的形式进行的
    3的补码:00000011
    4的补码:00000100

    &运算 有0则0
         00000011
       &
         00000100
      --------------
         00000000  => 0

    |运算  有1则1
         00000011
       |
         00000100
      --------------
         00000111  => 7

    ^运算  相同则0,不同则1
         00000011
       ^
         00000100
      --------------
         00000111  => 7

    ~运算  1变成0,0变成1
          ~ 00000100
          --------------
  补码       11111011
  反码       11111010
  原码       10000101
  ---------------------------
  => -5

 

    << : 左移,右边用0补齐,相当于乘上2的n次方
    >> : 右移,左边空出来的,看最高位是1还是0,若是1就用1补齐,若是0就用0补齐,相当于除上2的n次方
    >>>: 无符号右移,左边空出来的,无论最高位是0还是1,都用0补齐
public class WeiOptDemo2 {
    public static void main(String[] args) {
        byte b1 = 5;
       System.out.println(b1<<2); // 20 = 5*4 = 5*2^2
        System.out.println(b1<<3); // 5*2^3 = 40
        System.out.println(b1<<5);

        System.out.println(24>>2); // 6=24/4=24/2^2
        System.out.println(-24>>2); // 6=-24/4=-24/2^2

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


    }
}

    b1的补码:00000101

    <<2位:
             00000101
         (00)00010100 -> 20
            -----------

    24的补码:00011000
    24>>2位:
        00011000
        00000110(00)
        ----------- -> 6

     -24的原码:10011000
     -24的反码:11100111
     -24的补码:11101000
     -24>>2:
               11101000
     补码:     11111010(00)
     ------------------------
     已知补码求原码:
     补码:  11111010
     反码:  11111001
     原码:  10000110
     ---------------- -> -6

     -24的原码:10000000 00000000 0000000 00011000
     -24的反码:11111111 11111111 1111111 11100111
     -24的补码:11111111 11111111 1111111 11101000
     -24>>>2:
            11111111 11111111 1111111 11101000
            0011111111 11111111 1111111 111010(00)
            --------------------------------------- -> 1073741818

 
posted @ 2024-07-26 19:54  ていせい  阅读(3)  评论(0编辑  收藏  举报