1、不同进制的书写格式
十进制:java中,数值默认都是10进制,不需要加任何修饰。
二进制:数值前面以0b开头,b大小写都可以。
八进制:数值前面以0开头
十六进制:数值前面以0x开头,x大小写都可以
注意:以上内容是jdk7版本之后才被支持
注意:使用打印语句在控制台输出的时候输出的是十进制。
2、进制转换
任意进制到十进制的转换
公式:系数*基数的权次幂相加
- 系数:每一位上的数。
- 基数:几进制,就是几。
-
十进制到任意进制的转换
公式:除基取余
使用源数据,不断的除以基数(几进制,基数就是几)得到余数,直到商为0,再将余数倒着拼起来即可。
二进制转换十进制
使用8421码,先将二进制对应位数的权重写出来,然后做加法即可。
二进制转换八进制
二进制转换十六进制
3、原码反码补码
正数的原码反码补码,都是一样的。
负数的原码把每一位都0变1,1变0,符号位不变,此时为反码。
负数补码就是反码加一。
原码是看数据。
反码是转数据。
补码是运算数据。4、位运算
位运算指的是二进制位的运算,现将十进制转换成二进制后再进行运算。
在二进制运算中,1代表true,0代表false。
& 位与:遇false则false,遇0则0。
|位或:遇true则true,遇1则1。
^ 位异或:相同为false,不同为true。
一个数被另一个数进行异或2次会变成原来的数。
~取反:全部取反,0变1,1变0(也包括符号位)5、位移运算符
<< 左移运算符,有符号左移运算,二进制位向左移动,左边的符号位丢弃,右边补齐0。
运算规律:向左移动几位,就是乘以2的几次幂。
>> 右移运算符,有符号右移运算,二进制位向右移动,使用符号位进行补齐,如果符号位是0则补0,是1则补1.相当于除2。
运算规律:向右移动几位,就是除以2的几次幂。
>>>无符号右移运算符,无论符号位是0还是1,都补0。6、数据交换
使用异或进行数据交换,可以不声明第三个变量。
异或的特性,一个数被另一个数异或两次,等于原数。public class dataChange {
public static void main(String[] args) {
int a = 10;
int b = 20;
a = a ^ b ; // a = a ^ b
b = a ^ b ; // b = a ^ b ^ b | b = a
a = a ^ b ; // a = a ^ b ^ a | a = b
System.out.println(a);
System.out.println(b);
}
7、数组反转
```java import java.util.Arrays;
public class arrayReverse { public static void main(String[] args) { int[] arr = {11, 22, 33, 44, 55, 66, 77}; System.out.println(Arrays.toString(arr)); for (int start = 0, end = arr.length - 1; start < end; start++, end—){ int temp = arr[start]; arr[start] = arr[end]; arr[end] = temp;
}
System.out.println(Arrays.toString(arr));
}
```
定义两个指针,一个指向数组开头,一个指向数组结尾。
进行交换
两个指针开始靠近
直到开始指针大于等于结尾指针时,结束。