天天看点

java进制转换怎么学习?

10进制

10进制和2进制可以相互转换

23678(10进制)=2*10000+3*1000+6*100+7*10+8*1

                        =2*10^4+3*10^3+6*10^2+7*10^1+8*10^0

                         =23678

10称为“基数”、10^n称为“权”

2进制

二进制的基数为2、权为2^n

0100 0001(2进制)=1*2^6+1*2^0=65(十进制)

java中的二进制规则

1.java内部只有二进制补码,计算机内部数据以二进制补码表示

2.java内部采用补码运算,自动发送上溢出(乘法为上溢出)和下溢出(除法为下溢出)

3.java内部没有10进制!但java尽量按照人类习惯输出输入

4.补码的负数最高位是1,也成符号位。

16进制

16进制是2进制的简写。

10进制:1234567890

2进制:0010 0100 1100 1011 0000 0010 1101 0010

16进制:499602d2

16进制的基数为16 , 权为16^n:4096 256 16 1

16进制和其他进制的转换:

41(16进制)=4*(16^1)+(16^0)=65(10进制)=0100 0001(2进制)

package basic.day02;

public class BinDemo{

public static void main(String[] args){

int i=192;

System.out.println(Integer.toBinaryString(i));

System.out.println(Integer.toHexString(i));

i=oxf4;

System.out.println(i);

System.out.println(Integer.toHexString(i));

i=o72;

System.out.println(i);

}

}

补码

8421编码    

0     0000             8     1000               -8                                                            

1     0001             9     1001                -7                                               

2     0010             10   1010                -6                                                                      

3     0011             11    1011               -5                                                                              

4     0100             12    1100               -4                                                                         

5     0101             13    1101               -3                                              

6     0110              14   1110                -2                                                                                   

7     0111              15    1111              -1                                                        

8     1000              0      0000                                                                 

9     1001              1      0001                                                                                               

10   1010               2     0010                                                                                                             

11   1011                3     0011                                              

12   1100               4      0100

13   1101               5      0101                                                         

14   1110                6     0110                                                                           

15   1111               7       0111      

分析:

计算机中使用四位二进制的数表示数据,最多能表示0-15(10进制);

将所有1开头的数全部放到0000之前,并且用来表示负数,这就是四位补码;

-1(1111)+1(0001)=0(10000),即溢出最高位“1”,保留4个0,那么得到的-1+1=0;-8(1000)+7(0111)=-1(1111)

  -1(1111)*-1(1111)

                                                             1111

                                                         *  1111

                                                     -------------------------    

                                                             1111

                                                           1111

                                                         1111

                                                       1111

                                                   ---------------------------

                                                       000 0001

得出的结论:

在封闭的四位运算中(超出4位就丢弃),这种运算规则就是补码。

知识点

1.计算机中正数和负数的关系就是取反加一:~3(1100)+1(0001)=-3(1101);

2.补码运算是封闭的:运算结果保留在补码范围之内,超范围就溢出;

3.补码边界运算有溢出风险;

4.4位二进制补码最多能表示2^4(16)个数,数的范围是:-8~7;

5.8位二进制补码最多能表示2^8(256)个数,数的范围是-128~127;

6.16位二进制补码最多能表示2^16(65536)个数,数的范围是-32768~32767

7.32位二进制补码最多能表示2^32个数,数的范围是-2G~2G-1(1G=1024*1024*1024)

 二进制转换成10进制

1111 1001

第一步:按位取反 0000 0110

第二步:末尾加1  0000  0111

第三步:将二进制转换成10进制  2^0+2^1+2^2=7

第四步:因为是1打头,因此带上负号:-7

10进制转换成2进制

-7

第一步:先算出7的2进制:0000 0111

第二步:按位取反             1111 1000

第三步:末尾加1              1111  1001

总结如下:

计算机中二进制转换成10进制

1.以0开头的,直接将2进制转换为10进制;

2.以1开头的,需四步,按位取反,末尾加1,转换为10进制,加负号;

10进制转换为2进制

正数取原码,负数按位取反末尾加一

注意:4位补码不能表示8,要是表示8必须使用8位以上类型补码。