java中表示每种进制的方式:

  1. 二进制: 0b开头<br /> 八进制: 0开头<br /> 十六进制: 0x开头
  2. 计算机针对数据在二进制中的存储分为 原码 反码 和补码<br /> 所有的计算都是 补码进行计算<br /> **正数: 原码 反码 补码 三码合一 三码相同**<br /> ** 负数: 原码跟正数相等 反码是原码按位取反 补码是反码+1**<br />二进制的最高位是符号位 1表示当前数为负数 0为正数<br />+9 的原码 反码 补码:<br /> 0000-0000 0000-0000 0000-0000 0000-1001<br />-9<br /> 原码:<br /> 1000-0000 0000-0000 0000-0000 0000-1001<br /> 反码:<br /> 1111-1111 1111-1111 1111-1111 1111-0110<br /> 补码:<br /> 1111-1111 1111-1111 1111-1111 1111-0111
  3. 222四个字节 强转成 一个字节
  4. 变成-34<br /> 如何来的:<br /> +222 原码 反码 补码:<br /> 0000-0000 0000-0000 0000-0000 1101 1110<br /> 强转以后<br /> 1101 1110<br /> 由于最高位是1 表示此数为负数 那么这个二进制就是补码<br /> 要反推原码 才知道是几<br /> 补码:<br /> 1101 1110<br /> 反码:<br /> 1101-1101<br /> 原码:<br /> 1010-0010 -34

位运算:

    按位进行运算   1byte=8bit(比特位)<br />    位运算:

1.<< 左移运算

        被移除的高位丢弃<br />          n<<m<br />          n*2的m次方<br />          面试题:<br />            2X8最效率的方法<br />            2<<3

2. >>右移运算

        最高位是1 则空缺位补1<br />            最高位是0  则空缺位补0

3. >>>无符号右移运算

        如果原本是一个负数 那么无符号右移 会变成很大的正数

     3的原反补码:<br />    0000-0000 0000-0000 0000-0000 0000-0011<br />    3<<2:<br />    0000-0000 0000-0000 0000-0000 0000-1100

-9的补码:
1111-1111 1111-1111 1111-1111 1111-0111

  4.& 位与运算

5.  | 位或运算

6.  ^ 位异或运算

 7. ~ 按位取反运算

&(与)|(或)^(异或)<br />    如果两边操作数是 布尔值或者布尔表达式<br />    那么进行的就是逻辑运算

如果两边是具体的数值 那么进行的就是 位运算

3 & 4

位运算是转换成二进制 按位进行 &  |  ^运算

0当false 1当true

位与运算(&)  全1才1  一0即0<br />    位或运算(|)  全0才0 一1则1<br />    位异或运算(^) 相同为0  不同为1<br />    ~ 取反运算   按位取反(符号位也取反)





0000-0000 0000-0000 0000-0000 0000-0011    ----3<br />    ---------------------------------------&<br />    0000-0000 0000-0000 0000-0000 0000-0100    ----4<br />    -------------------------------------------------<br />    0000-0000 0000-0000 0000-0000 0000-0000     0





0000-0000 0000-0000 0000-0000 0000-0011    ----3<br />    ---------------------------------------|<br />    0000-0000 0000-0000 0000-0000 0000-0100    ----4

------------------------------------------------<br />    0000-0000 0000-0000 0000-0000 0000-0111   ----7



0000-0000 0000-0000 0000-0000 0000-0011    ----3<br />    ---------------------------------------^<br />    0000-0000 0000-0000 0000-0000 0000-0100    ----4<br />    ---------------------------------------------<br />    0000-0000 0000-0000 0000-0000 0000-0111    ----7


0000-0000 0000-0000 0000-0000 0000-0011    ----3<br />    --------------------------------------~<br />    1111-1111 1111-1111 1111-1111 1111-1100  ----补码

1111-1111 1111-1111 1111-1111 1111-1011  ----反码

1000-0000 0000-0000 0000-0000 0000-0100  ----原码<br />        -4