1 进制数
十进制:Java中,数值默认都是10
进制,不需要加任何修饰。
二进制:数值前面以0b
开头,b
大小写都可以。
八进制:数值前面以0
开头。
十六进制:数值前面以0x
开头,x
大小写都可以。
注意:
书写的时候, 虽然加入了进制的标识, 但打印在控制台展示的都是十进制数据.
(1)十进制到任意进制转换
公式:除基取余使用源数据,不断的除以基数(几进制,基数就是几)得到余数,直到商为0,再将余数倒着拼起来即可
(2)任意进制到十进制转换
公式:系数*基数的权次幂相加
- 系数:每一[位]上的数
- 基数:几进制,就是几
- 权:从数值的右侧,以开始,逐个+1增加
2 原码反码补码
3 位运算
位运算符指的是二进制位的运算,先将十进制数转成二进制后再进行运算。在二进制位运算中,1表示true,0表示false。
<<
有符号左移运算,二进制位向左移动, 左边符号位丢弃, 右边补齐0
运算规律: 向左移动几位, 就是乘以2的几次幂
>>
有符号右移运算,二进制位向右移动, 使用符号位进行补位
运算规律: 向右移动几位, 就是除以2的几次幂
>>>
无符号右移运算符, 无论符号位是0还是1,都补0
注意:
一个数被另一个数异或两次,该数本身不变
案例:交换两个数据
public static void main(String[] args) {
int a = 10;
int b = 20;
// 将a原本记录的值,交给temp记录 (a的值,不会丢了)
int temp = a;
// 用 a 变量记录 b 的值,(第一步交换完毕,b的值也丢不了了)
a = b;
// 使用 b 变量记录 temp的值,也就是a原本的值 (交换完毕)
b = temp;
// 输出 a 和 b 变量即可
System.out.println("a=" + a);
System.out.println("b=" + b);
}
不允许使用第三方变量