admin 管理员组

文章数量: 887021

二进制

什么是2进制

  1. 逢二进一的计数规则

  2. 如何将2进制转换为10进制?

    • 将一个2进制数每个1位置的权值累加即可
  3. Java 所有的变量\常量存储的都是2进制数!

什么是16进制

  1. 逢16进1的计数规则
  2. 因为2进制的书写太繁琐麻烦
  3. 所以常常用16进制来缩写2进制数字
  4. 怎么缩写:将2进制从最低位开始,每4位2进制缩写为1位16进制

补码

  1. 计算机中处理有符号数(正负数)的一种编码方式,java中的补码最小类型是int,32位数

  2. 以4位2进制为例讲解补码的编码规则:

    • 计算的时候如果超出4位数就自动溢出舍弃,保持4位数不变
    • 将4位2进制数分一半作为负数使用
    • 最高位称为符号位,高位为1是负数,高位为0是正数
      int n = -3;
      System.out.println(Integer.toBinaryString(n));/*
      规律数:
      1)0111为4位补码的最大值,规律是1个0和3个1,可以推导出:32位补码的最大值,是1个0和31个1-----(011111111...)
      2)1000为4位补码的最小值,规律是1个1和3个0,可以推导出:32位补码的最小值,是1个1和31个0-----(100000000...)
      3)1111为4位补码的-1,规律是4个1,可以推导出:32位补码的-1是,是32个1------------(11111111...)
      */    
      int max = 2147483647; //int的最大值
      int min = -2147483648; //int的最小值
      System.out.println(Integer.toBinaryString(max)); //011111...
      System.out.println(Integer.toBinaryString(min)); //100000...
      System.out.println(Integer.toBinaryString(-1)); //11111...

  3. 深入理解负值:

    记住-1的编码是32个1         用-1减去0位置对应的权值
  4. 互补对称:

    公式:-n=~n+1 结论:一个数的补码=这个数取反+1  举例说明:
    int n = -3;
    int m = ~n+1;
    System.out.println(m); //3  -3的补码就是-3取反+1
    

      

位运算

~ 取反
& 与运算
| 或运算
>>> 右移位运算
<< 左移位运算

补充:

权:       64  32  16  8  4  2  11   1   0   0  1  0  0          = 100  右移位1   1   0  0  1  0          = 501   1  0  0  1          = 251  1  0  0          = 12 权:       64  32  16  8  4  2  1
n                     0  1  0  1 = 5
m                  0  1  0  1    = 10
k             0    1  0  1       = 20int n = 5;
int m = n<<2;
System.out.println(m); //20

本文标签: 二进制