目录
- 1. 求int类型数字的二进制
- 2. 特殊值展示
- 3. 心得
1. 求int类型数字的二进制
我们可以用位运算的与和左移去求
public class Lesson01 {public static void print(int num){for(int i = 31; i >=0; i--){System.out.print((num & (1 << i)) == 0 ? "0":"1");}System.out.println();}public static void main(String[] args) {int num = 2;print(num);}
}
运行结果:
00000000000000000000000000000010
2. 特殊值展示
求相反数跟计算机组成的求法是一样的,直接取反加一
public static void main(String[] args) {int num = 1234567;print(num);int c = ~num;print(c);print(Integer.MAX_VALUE);print(Integer.MIN_VALUE);print(Integer.MAX_VALUE + Integer.MIN_VALUE);print(-2);// -2的相反数是2print(~(-2) + 1);print(-2 + ~(-2) + 1);print(Integer.MIN_VALUE * (-1));
}
运行结果:
00000000000100101101011010000111
11111111111011010010100101111000
01111111111111111111111111111111
10000000000000000000000000000000
11111111111111111111111111111111
11111111111111111111111111111110
00000000000000000000000000000010
00000000000000000000000000000000
10000000000000000000000000000000
为什么要将相反数设计成这样:为了使其相加符合一套逻辑,方便底层实现。
3. 心得
有点简单,主要是用来理解计算机组成的算法,还是蛮简单的。