目录
- 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的相反数是2
print(~(-2) + 1);
print(-2 + ~(-2) + 1);
print(Integer.MIN_VALUE * (-1));
}
运行结果:
00000000000100101101011010000111
11111111111011010010100101111000
01111111111111111111111111111111
10000000000000000000000000000000
11111111111111111111111111111111
11111111111111111111111111111110
00000000000000000000000000000010
00000000000000000000000000000000
10000000000000000000000000000000
为什么要将相反数设计成这样:为了使其相加符合一套逻辑,方便底层实现。
3. 心得
有点简单,主要是用来理解计算机组成的算法,还是蛮简单的。