进制的四种表示方式:
1.二进制:0,1,满2进1,以0b或0B开头
2.十进制:0~9,满10进1
3.八进制 : 0~7,满8进1,以数字0开头表示
4.十六进制:0~9及 A(10)~F(15),满16进1,以0x或0X开头表示
int a = 0b1010;
int b = 1010;
int c = 01010;
int d = 0x10101;
System.out.println("a="+a);
System.out.println("b="+b);
System.out.println("c="+c);
System.out.println("d="+d);
结果:
a=10
b=1010
c=520
d=65793
十进制 | 十六进制 | 八进制 | 二进制 |
0 | 0 | 0 | 0 |
1 | 1 | 1 | 1 |
2 | 2 | 2 | 10 |
3 | 3 | 3 | 11 |
4 | 4 | 4 | 100 |
5 | 5 | 5 | 101 |
6 | 6 | 6 | 110 |
7 | 7 | 7 | 111 |
8 | 8 | 10 | 1000 |
9 | 9 | 11 | 1001 |
10 | A | 12 | 1010 |
11 | B | 13 | 1011 |
12 | C | 14 | 1100 |
13 | D | 15 | 1101 |
14 | E | 16 | 1110 |
15 | F | 17 | 1111 |
16 | 10 | 20 | 10000 |
17 | 11 | 21 | 10001 |
其他进制转十进制:
二进制转十进制:
- 0b1011=1*2的(1-1)次方+1*2的(2-1)次方+0*2的(3-1)次方+1*2的(4-1)次方
- =1 + 2 + 0 + 8
- = 11
八进制转十进制:
规则:从最低位(右边)开始,将个位上的数提取出来,乘以8的(位数-1)次方,求和
- 0234 = 4*8^0 + 3 * 8^1 + 2 * 8 ^ 2
- = 4 + 24 +128
- = 156
十六进制转十进制:
规则:从最低位(右边)开始,将个位上的数提取出来,乘以16的(位数-1)次方,求和
- 0x23A = 10*16^0 + 3 * 16^1 + 2 * 16 ^ 2
- = 10 + 48 + 512
- = 570
十进制转其他进制:
十进制转二进制:
规则:将该数字不断除以2,直到商为0为止,然后将每步得到的余数倒过来,就是对应的二进制
- 34 =0B100010
十进制转八进制:
规则:将该数字不断除以8,直到商为0为止,然后将每步得到的余数倒过来,就是对应的二进制
十进制转十六进制:
规则:将该数字不断除以16,直到商为0为止,然后将每步得到的余数倒过来,就是对应的二进制
二进制转换八进制,十六进制
二进制转八进制:
规则:从低位开始,将二进制数每三位一组,转成对应的八进制即可
- 0b11(3)010(2)101(5) =>0325
二进制转十六进制:
规则:从低位开始,将二进制数每四位一组,转成对应的八进制即可
- ob1101(D)0101(5) => 0xD5
二进制转换八进制,十六进制
八进制转换二进制:
规则:将八进制每一位,转换对应的一个3位的二进制数即可(不够4位要补0,或者去0)
- 02(010)3(011)7(111) = 0b000010011111
十六进制转换二进制:
规则:将十六进制每一位,转换对应的一个4位的二进制数即可(不够4位要补0,或者去0)
- 0x2(0010)3(0011)B(1011) = 0b001000111011
原码,反码,补码
1.二进制的最高位是符号位:0表示正数,1表示负数
2.正数的原码,反码,补码,都一样
3.负数的反码 = 它的原码符号位不变,其它位取反
4.负数的补码 = 它的反码+1,负数的反码 = 负数的补码-1
5.0的反码,补码都是0
6.在计算机运算时,以补码的方式来运算
7.当我们看运算结果,要看他的原码