二进制,十进制,八进制,十六进制之间的转换

计算机内部只有二进制,包括字符数据等 
 int i = 15; //00000000 00000000 00000000 00001111 ==>  1字节 = 8位
            1Byte = 8 bit
            int 有4个字节,即32位
 char c = 'a'; //00000000 01000001
  计算机内部使用的二进制位都是补码的形式
  (此处用1个字节表示)
  15:
   原码00001111 ==>补码 00001111
   整数的原码和补码相同
  -15:
   15的原码 ==>反码+1 ==> 补码
   原码00001111 ==> 反码11110000 +1 ==>补码 11110001
    如果用2个字节表示-15的反码
     原码00000000 00001111
     反码11111111 11110001
    如果用3个字节表示-15的反码
     原码00000000 00000000 00001111
     反码11111111 11111111 11110001
    以此类推
    可以用System.out.println(Integer.toBinaryString(a));打印验证

  int i=-1;//11111111 11111111 11111111 11111111
  int i = -2147483648(int中最小的负数)//100000000 00000000 00000000 00000000
  

十进制是人类的习惯
 计算机在输出时候根据人类习惯输出10进制
  赋值的时候默认是赋值10进制
 
 计算机默认接受10进制,自动转换为二进制数据
 16进制是二进制的简写
  方便人类书写和记忆
  0xff -> 11111111
转换
   int x = 020;//八进制  0开头
   八进制==>十进制
    020==>2*8+0
    0120 ==> 1*8^2 + 2*8^1 + 0
    01234 --> 1*8^3 + 2*8^2 + 3*8 +4 

   x = 0x2E;//十六进制  0x开头
   十六进制 ==>十进制
    x=0x2E; ==> 2*16^1 + e =46
    x= 0x1234 ==> 1*16^3 + 2*16^2 + 3*16 + 4

   二进制 ==> 十进制
    0000 1111 ==> 1*2^3 + 1*2^2 + 1*2 + 1 =15
    0100 1001 ==> 1*2^6 + 1*2^3+1 =
   
  十进制 ==>二进制  
  1)除二取余
   28/2  14/2 7/2   3/2  1/2  0
   0 0 1 1 1 0 ==>倒序1 1100
   37/2 18/2  9/2  4/2  2/2
   1 0 1 0 1  ==>倒序(如果需要则前面补0) 0001 0101
  2)对应权重 (简化算法) 
   int x =37;
   32 + 4 +1
   0010 0101    // 128 64 32 16 8 4 2 1
            0 0 1 0 0 1 0 1
   998
   998 - 512 = 486 - 256 = 230 -128 = 102 - 64 = 38 -32   =6-4 =2-2 =0
   1111100110 //512    256  128  64   32      16     8      4      2      1
                           1      1     1      1     1       0      0       1      1      0   
  
  八进制 ==> 二进制
   int x = 01234;用三个二进制位表示一个八进制位
   000 001 010 011 100
  十六进制 ==> 二进制
   int x = 0x1234; 用4个二进制表示一个16进制位
   0001 0010 0011 0100

   0x12345678==>0001 0010 0011 0100 0101 0110 0111 1000
  二进制 ==> 16进制
  0000 0111 1111 1110  ==> 0x07FE;
  一般用16进制表示二进制
  例x = 0x7FE ;//0000 0111 1111 1110,直接赋值则以为是八进制(因为以0开头)



原文地址:https://www.cnblogs.com/hqr9313/p/2438290.html