进制转换
- 10进制
十进制(逢10进1)是我们最常用的一种数位进制方式。 10进制和2进制可以相互转换,举例如下:
如上例所示,10称做"基数",10^n(10的n次幂)被称作"权",10000 1000 100 10 1。
- 进制
二进制(逢2进1)是基数为"2"的的进制。二进制的基数为2,权为2^n(2的n次方),128 64 32 16 8 4 2 1
0100 0001(2进制) = 164 + 11 = 65(十进制)
Java中的二进制规则
Java内部数据存储有如下规则:
1、Java内部只有二进制补码,计算机内部数据以二进制补码表示。
2、Java内部采用补码运算,自动发送上溢出(乘法为上溢出)和下溢出(除法为下溢出)。
3、Java内部没有10进制!但是Java尽量按照人类习惯输入输出。
4、补码的负数,最高位是1,也称作符号位。
补码基础
关于补码演化过程: 假如计算机中使用4位的二进制表示数据,如图2,最多能表示0到15(10进制),之后有牛人做了一个细微改动,如图3,将所有二进制以1开头的数(大于7的数)放到0之前,并且规定用来表示负数-1到-8,这就是4位补码: 如图4.
知识点:
1、计算机中正数和负数的关系是取反加一。举例如:3+1=-3(3表示对3取反)。
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= 102410241024)。
所以总结如下: 计算机中2进制(转)10进制:
以0开头的,直接将2进制转换为10进制;
以1开头的,需4步,按位取反,末尾加1,转换为10进制,加负号;
10进制数(转)计算机中2进制数: 正数取原码,负数按位取反末尾加1。
需要注意的是: 4位补码不能表示8, 要是表达8必须使用8位或以上类型的补码。