一、进制介绍:
1.进制:指进位制,表示某一位置上的数,运算时是逢X进一。
十进制就是逢十进一,二进制就是逢二进一,八进制就是逢八进一。
2.Java中默认的数值都是十进制,如果要输入其他进制,在数值前面加:
二进制:数值前面加0b
八进制:数值前面加0
十六进制:数值前面加0x
注:在Java中,即使在数值前面加了其他进制的标识,控制台输出的数据仍为十进制数据。
3.其他进制转换为十进制的方法:
例如,二进制转换为十进制:
十六进制转换为十进制:
八进制转为十进制的方法也如上。
4.十进制转为其他进制的方法:
十进制转二进制:
十进制转十六进制:
5.快速进制转换法
用8421码,又称BCD码。
例如:
二进制快速转十进制:
二进制快速转八进制:
(三个二进制位为一组)
二进制快速转十六进制:
(四个二进制位为一组)
(注:至于八进制与十六进制的转换,可先将八进制或十六进制先转换为二进制,再进行所需要的转换)
二、原码、补码、反码
1.原码、补码、反码介绍:
计算机中的数据,都是以二进制补码的形式进行运算,而补码是通过原码和反码推算出来的。
一个字节是八个二进制位。int为四个字节,即四组八个二进制位。
正数与负数的原码反码补码介绍:
把int类型的数值强转为byte类型时,精度损失问题:
三、位运算符
1.位运算符的介绍:位运算符指的是二进制位的运算,先将十进制数转为二进制数再进行运算。
2.在二进制位运算中,1表示true,0表示fales。
3. &: 位与 遇false则false(即遇0则0)
| : 位或 遇true则true (即遇1则1)
^ : 位异或 相同为false,不同为true
(注:一个值,被另一个值异或两次,该数本身不变。)例子如下:
~ : 取反 全部取反,0变1,1变0(包括符号位)。
四、位移运算符
1.<< :有符号左移运算,二进制位向左移动,左边符号位丢弃,右边补齐0。
运算规律:向左移动几位,就是乘以2的几次幂。
eg:System.out.println(12 << 1); 代表12向左移动1位,即12乘以2的一次幂,控制台输出24。
2.>>:有符号右移运算,二进制向右移动,使用符号位进行补位。
运算规律:向右移动几位,就是除以2的几次幂。
eg:System.out.println(3 >> 1); 代表3向右移动1位,即3除以2的一次幂,控制台输出1。(因为int类型只能输出整数,小数不要)
3. >>> 无符号右移运算,无论符号位是0还是1,都补0。