位-字节-bit-byte的关系

bit—位 byte—字节

1 byte = 8 bit
1KB = 1024 byte
1MB = 1024 KB

源码、反码、补码

原码:
就是原码,bai真实的码
反码:
在原码的基础上,符号位不变,数值位按位取反
补码:
(1)正数的补码:与原码相同。
【例1】+9的补码是00001001。
(2)负数的补码:符号位为1,其余位为该数绝对值的原码按位取反然后整个数加1。

位运算符

正数:第32位=0
负数:第32位=1

位运算符:与 &

  1. 1&1 = 1
  2. 1&0 = 0
  3. 0&0 = 0
  4. System.out.println("4 的二进制位数:"+Integer.toBinaryString(4));
  5. System.out.println("6 的二进制位数:"+Integer.toBinaryString(6));
  6. System.out.println("4&6 的二进制位数:"+Integer.toBinaryString(4&6));

位运算符:或 |

  1. 1|1 = 1
  2. 1|0 = 1
  3. 0|0 = 0
  4. System.out.println("4 的二进制位数:"+Integer.toBinaryString(4));
  5. System.out.println("6 的二进制位数:"+Integer.toBinaryString(6));
  6. System.out.println("4|6 的二进制位数:"+Integer.toBinaryString(4|6));

位运算符:非 ~

  1. ~1 = 0
  2. ~0 = 1
  3. System.out.println("4 的二进制位数:"+Integer.toBinaryString(4));
  4. System.out.println("~4 的二进制位数:"+Integer.toBinaryString(~4));
  5. System.out.println("5 的二进制位数:"+Integer.toBinaryString(5));
  6. System.out.println("~5 的二进制位数:"+Integer.toBinaryString(~5));

位运算符:异或 ^

  1. 1^1 = 0
  2. 1^0 = 1
  3. 0^0 = 0
  4. System.out.println("4 的二进制位数:"+Integer.toBinaryString(4));
  5. System.out.println("5 的二进制位数:"+Integer.toBinaryString(5));
  6. System.out.println("6 的二进制位数:"+Integer.toBinaryString(6));
  7. System.out.println("4^5 的二进制位数:"+Integer.toBinaryString(4^5));
  8. System.out.println("4^6 的二进制位数:"+Integer.toBinaryString(4^6));

有符号左移 <<

将数字左移,符号位不变,原30位的值消失

  1. System.out.println(Integer.toBinaryString(18));
  2. System.out.println(Integer.toBinaryString(18<<1));
  3. System.out.println(Integer.toBinaryString(-18));
  4. System.out.println(Integer.toBinaryString(-18<<1));

有符号右移 >>

将数字右移,正数,高位补0;负数,高位补1;

  1. System.out.println(Integer.toBinaryString(18));
  2. System.out.println(Integer.toBinaryString(18>>1));
  3. System.out.println(Integer.toBinaryString(-18));
  4. System.out.println(Integer.toBinaryString(-18>>1));

无符号右移 >>>

将数字右移,高位统统补0

  1. System.out.println(Integer.toBinaryString(18));
  2. System.out.println(Integer.toBinaryString(18>>>1));
  3. System.out.println(Integer.toBinaryString(-18));
  4. System.out.println(Integer.toBinaryString(-18>>>1));