二进制
二进制:0和1组成,满2进1,以0b开头或者是0B;
int b1 = 0B00000010;//(2)
System.out.println(b1);
2
十进制
十进制:0到9组成,满10进1
int b2 = 1565;//(1565)
System.out.println(b2);
1565
八进制
八进制:0到7组成,满8进1,以数字0开头
int b3 = 000001221;
System.out.println(b3);
657
十六进制
十六进制:由0到9,A(10)到F(15)组成,满16进1,以0x或0X开头此处的A到F不区分大小写。
int b4 = 0X000015a5;
System.out.println(b4);
5541
进制之间的转换
二进制转换十进制
规则:从最低位(右边)开始,将每个位上的数字提取出来,乘以2的(位数-1)次方,然后求和。
//0b1011(二进制)
// 1 0 1 1
// 1*2^(4-1)+0*2^(3-1)+1*2^(2-1)+1*2^(1-1)
// 8 + 0 + 2 + 1
// 11
int b1 = 0b1011;
System.out.println(b1);
11
八进制转换十进制
规则:从最低位(右边)开始,将每个位上的数字提取出来,乘以8的(位数-1)次方,然后求和。
//0234(八进制)
// 2 3 4
// 2*8^(3-1)+3*8^(2-1)+4*8^(1-1)
// 128 + 24 + 4
// 156
int b2 = 0234;
System.out.println(b2);
156
十六进制转换十进制
规则:从最低位(右边)开始,将每个位上的数字提取出来,乘以16的(位数-1)次方,然后求和。
//0x23A
// 2 3 A
// 2*16^(3-1)+3*16^(2-1)+10(A)*16(1-1)
// 512 + 48 + 10
// 570
int b3 = 0x23A;
System.out.println(b3);
570
十进制转换二进制
规则:将该数字不断除以2,直到商0为止,然后将每一步得到的余数 倒过来,就是对应的二进制。
十进制转换八进制
规则:将该数字不断除以8,直到商0为止,然后将每一步得到的余数 倒过来,就是对应的二进制。
十进制转换十六进制
规则:将该数字不断除以16,直到商0为止,然后将每一步得到的余数 倒过来,就是对应的二进制。
二进制转换八进制
规则:从低位开始,将二进制数的每三位一组,转成对应的八进制数即可。
//0b11010101(二进制)
// 11 010 101
// 3 2 5
//0 325(八进制)
二进制转换十六进制
规则:从低位开始,将二进制数的每四位一组,转成对应的十六进制数即可。
//0b11010101(二进制)
// 1101 0101
// 13 5
// D 5
//0xD5(十六进制)
八进制转换二进制
规则:将八进制的每一位,转换成一个3位的二进制。
//0325(八进制)
// 3 2 5
// 011 010 101
//0b11010101(二进制)
十六进制转换二进制
规则:将十六进制的每一位,转换成一个4位的二进制。
//0x23B(十六进制)
// 2 3 B(11)
// 0010 0011 1011
//0b001000111011(二进制)
原码、反码、补码
1.二进制的最高位是符号位:0表示正数,1表示负数。
2.正数的原码、反码、补码相同;
3.负数的反码=它的原码的符号位不变,其他位按位取反出。
4.负数的补码=反码+1;
5.0的反码、补码都是0;
6.java没有无符号数。
7.在计算机运行中,都是以补码的形式运算的。
8.我们需要知道运算结果时,要看它的原码。
//正数的原码反码补码都相等
//2的原码:00000000 00000000 00000000 00000010
//2的反码:00000000 00000000 00000000 00000010
//2的补码:00000000 00000000 00000000 00000010
//负数
//-2的原码:10000000 00000000 00000000 00000010
//原码的符号位不变,其他按位取反
//-2的反码:11111111 11111111 11111111 11111101
//反码+1
//-2的补码:11111111 11111111 11111111 11111110
如有错误,还望指正。