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位以上类型补码。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值