一、进制
进制就是进位制,是人们规定的一种进位方法。 对于任何一种进制—X进制,就表示某一位置上的数运算时是逢X进一位,二进制就是逢二进一,八进制是逢八进一,十进制是逢十进一,十六进制是逢十六进一。
二、分类
Java进制分为二进制,八进制,十进制,十六进制, 但是计算机只能处理2进制的数据和指令。
-
二进制
由0,1组成,以0b开头。(b大小写都行) -
八进制
由0,1,…,7组成,以0开头。 -
十进制
由0,1,…,9组成,整数默认为十进制。 -
十六进制
由0,1,…,9,a,b,c,d,e,f组成(大小写均可),以0x开头。
三、Java 进制转换
十进制转成十六进制:
Integer.toHexString(int i)
十进制转成八进制
Integer.toOctalString(int i)
十进制转成二进制
Integer.toBinaryString(int i)
10进制转 r 进制
Integer.toString(100, r);
r进制转成十进制
Integer.parseInt((String) s,(int) r);
四、原码, 反码, 补码
1. 原码
原码就是符号位加上真值的绝对值,即用第一位表示符号,其余位表示值。比如:如果是8位二进制:
-
[+1]的源码:0000 0001
-
[-1]的源码:1000 0001
第一位是符号位,因为第一位是符号位,所以8位二进制数的取值范围就是:[1111 1111 , 0111 1111],即[-127 , 127]
2. 反码
反码的表示方法是:
-
正数的反码是其本身;
-
负数的反码是在其原码的基础上,符号位不变,其余各个位取反。
[+1]:原码[0000 0001], 反码 [0000 0001]
[-1] :原码[1000 0001], 反码 [1111 1110]
3. 补码
补码的表示方法是:
-
正数的补码就是其本身;
-
负数的补码是在其原码的基础上,符号位不变,其余各位取反,最后+1。(也即在反码的基础上+1)
[+1] = [0000 0001]原= [0000 0001]反= [0000 0001]补
[-1] = [1000 0001]原= [1111 1110]反= [1111 1111]补