java进制转换

2进制:0b / 0B 8进制:0 016进制:0x / 0X

所有的数字在计算机底层都是以二进制形式存在,且以补码的形式保存所有整数。

(1)二进制和十进制之间的转换(重点)
   a.正十进制转换为二进制
     1)除2取余法,十进制整数不断除以2取余并记录,直到商为0时停止,将余数进行反向排列。
     2)拆分法,将十进制整数拆分为多个二进制权重的和,若该权重存在则写1,否则写0即可
如:57 = 32 + 16 + 8 + 1
   二进制的权重:128  64  32  16  8  4  2  1
                  0   0   1   1  1  0  0  1
 ---------------------------------------------------------------------------------  
   b.正二进制转换为十进制
     1)加权法,让二进制的当前位数字乘以当前位的权重,再将各个乘积累加起来即可。  
     0011 1001 => 1*2^0 + 0*2^1 + 0*2^2 + 1*2^3 + 1*2^4 + 1*2^5 + 0*2^6 + 0*2^7 
              => 57
 --------------------------------------------------------------------------------- 
   c.负 十进制转换为二进制
     1)将该整数的绝对值拆分为二进制,然后进行按位取反,再加1。
     如:-57转换为二进制:   57转换为二进制:0011 1001
                          按位取反:1100 0110
                          再加1:1100 0111
    -57 + 57 = 0
    -57: 1100 0111
    +57: 0011 1001
   --------------------
     1 0000 0000(溢出)
 --------------------------------------------------------------------------------- 
   d.负二进制转换为十进制
    1)将二进制数位进行按位取反,再加1,转换为十进制整数后添加负号。
    1100 0111 进行按位取反:0011 1000
                     再加1:0011 1001
           转换为十进制整数:57
                 添加负号:-57

(2)二进制和八进制的转换(熟悉)
   a.二进制转换为八进制
     1)将每三位二进制转换为一位八进制,转换的结果前面加0作为八进制的前缀。
          010 011(二进制) => 023(八进制) 
   b.八进制转换为二进制
     1)将每一位八进制拆分为三位二进制,转换的结果前面加0b作为二进制的前缀(jdk1.7)。 
          023(八进制) => 0b010 011(二进制)  
  --------------------------------------------------------------------------------- 
(3)二进制和十六进制的转换(熟悉)
   a.二进制转换为十六进制
     1)将每四位二进制转换为一位十六进制,转换的结果前面加0x作为十六进制的前缀。
         0101 0011(二进制) => 0x53(十六进制)
         1011 1001(二进制) => 0xb9(十六进制,使用a~f来表示数字10~15)     
   b.十六进制转换为二进制
     1)将每一位十六进制拆分为四位二进制,转换的结果前面加0b作为二进制的前缀
         0xab(十六进制) => 0b1010 1011(二进制)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值