1、不同进制的书写格式

十进制:java中,数值默认都是10进制,不需要加任何修饰。
二进制:数值前面以0b开头,b大小写都可以。
八进制:数值前面以0开头
十六进制:数值前面以0x开头,x大小写都可以
注意:以上内容是jdk7版本之后才被支持
注意:使用打印语句在控制台输出的时候输出的是十进制。

2、进制转换

任意进制到十进制的转换

公式:系数*基数的权次幂相加

  • 系数:每一位上的数。
  • 基数:几进制,就是几。
  • 权:从数值的右侧,以0开始,逐个+1增加

    十进制到任意进制的转换

    公式:除基取余
    使用源数据,不断的除以基数(几进制,基数就是几)得到余数,直到商为0,再将余数倒着拼起来即可。
    除基取余.jpg

    二进制转换十进制

    使用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、数据交换

    使用异或进行数据交换,可以不声明第三个变量。
    异或的特性,一个数被另一个数异或两次,等于原数。

    1. public class dataChange {
    2. public static void main(String[] args) {
    3. int a = 10;
    4. int b = 20;
    5. a = a ^ b ; // a = a ^ b
    6. b = a ^ b ; // b = a ^ b ^ b | b = a
    7. a = a ^ b ; // a = a ^ b ^ a | a = b
    8. System.out.println(a);
    9. System.out.println(b);
    10. }

    或者是声明第三个变量,作为中间变量。

    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;

  1. }
  2. System.out.println(Arrays.toString(arr));
  3. }

``` 定义两个指针,一个指向数组开头,一个指向数组结尾。
进行交换
两个指针开始靠近
直到开始指针大于等于结尾指针时,结束。