java 基礎二---進制轉換

<一>   二進制和十進制的相互轉換

十進制轉二進制方法一:十進制除二得到餘數,商繼續除2,直到商為0。將餘數從下網上排列得到的就是二進制數.

比如: 19 轉二進制為:10011(將餘數從下網上排列),二進制的高位在左,低位在右。

java 基礎二---進制轉換_第1张图片

十進制轉二進制方法二

二進制的八位分別對應十進制的數如下:

256      128      64       32      16      8        4         2         1

比如48:  48 = 32 + 16,所以在32 和 16所在的位置为1,其余为0,转为2进制就是

512   256  128  64  32  16  8   4   2   1

  0      0       0      0    1     1   0   0   0   0

比如256:  256 所在的位置为1,其余为0,转为2进制就是

512   256  128  64  32  16  8   4   2   1

  0      1       0      0    0     0   0   0   0   0

 

二進制轉十進制:(要从右到左用二进制的每个数去乘以2的相应次方)

比如随便写的一串 01111101

先写上 :  0         1           1         1         1         1          0          1

然后填充 128      64        32       16        8          4          2          1

1*1+0*2+1*4+1*8+1*16+1*32+1*64+0*128 = 125

 

 

<二>   二進制和十六進制的相互轉換

十六进制数据:123456789  A   B   C  D   E  F  

对应

十进制数数据:123456789 10 11 12 13 14 15

二進制轉十六進制:(四个为一组先转十进制,再将十进制转十六进制)

二进制  : 1001       1110

十进制  : 9(1+8)     16(2+4+8)
十六进制 : 9          E

1001 1110 转成十六进制位:9E

十六進制轉二進制:(四个为一组先转十进制,再将十进制转二进制)

十六进制:E9
十进制  :14(E)     9(9)
二进制  :1110        1001
E9转二进制:1110 1001

 

<三>   十進制和十六進制的相互轉換

十進制轉十六進制:十進制除16得到餘數,商繼續除16,直到商為0。將餘數從下網上排列得到的就是16進制數.

比如:十进制112 转16进制为:0x70

java 基礎二---進制轉換_第2张图片

十進制轉十六進制(方法二):

 比如:十进制112转2进制为:0111-0000  

  hex1:112 & 15(0111-0000   &  0000-1111) = 0(0000-0000)

  hex2:(112>>4) & 15(0000-0111   &  0000-1111) = 7(0000-0111)

 最终的结果就是:0x70

 

十六進制轉十進制:十六進制数的第0位的权值为16的0次方,第1位的权值为16的1次方,第2位的权值为16的2次方……

比如:2AF5

2AF5换算成10进制:

第0位:

第1位:

第2位:

第3位:

直接计算就是:

 

 

 

<四>    二進制負數
一个负数的二进制表现形式就是这个负数忽略符号的正数对应的二进制取反再加一。
计算机中存储的二进制数最高位是0则是正数,是1则是负数。

比如-1的二进制表现形式:1111 1111 1111 1111 1111 1111 1111 1111  
转换过程如下:
正数1的二进制表现形式: 0000 0000 0000 0000 0000 0000 0000 0001
取反:                           1111 1111 1111 1111 1111 1111 1111 1110
加1:                        +  0000 0000 0000 0000 0000 0000 0000 0001
-------------------------------------------------------------------------------      
                                     1111 1111 1111 1111 1111 1111 1111 1111  

所以java里面byte数据中的-1转换成正数如下:
-1的二进制:1111 1111 1111 1111 1111 1111 1111 1111  
& 255        &0000 0000 0000 0000 0000 0000 1111 1111
----------------------------------------------------------------------
                    0000 0000 0000 0000 0000 0000  1111 1111
最终得到的结果就是:255,java 中byte数据-1 就是255


java里面byte数据中的-2转换成正数如下:
-2的二进制:1111 1111 1111 1111 1111 1111 1111 1110
& 255        &0000 0000 0000 0000 0000 0000 1111 1111
----------------------------------------------------------------------
                    0000 0000 0000 0000 0000 0000  1111 1110
最终得到的结果就是:254,java 中byte数据-2 就是254

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(java,java基础)