1.左移 << 等同于num*2
1.1无符号整型:0——2^32-1
有符号整型:1)-2^31——2^31-1(0规正数)
2)0单算一个 。
3)负数,符号位不变,其余取反+1
1.2源码,反码,补码(底层走一套逻辑)。计算机底层运算时用位运算_unique_pursuit的,运算快。注:系统最小数,取反加1是其本身。0取反是其自身,溢出,就不要了
11111111111111111111111111111111 (-1)
1000000000000000000000000000 +1
0:非负
1:负数
package com.ZCY;
/**
* Author: 程郁洁
* DataTime: 2022/11/27 15:36
* 打印整数二进制状态,计算机底层的实现
**/
public class Code01_PrintB {
public static void main(String[] args) {
//1.32位,左移,用0补齐
int num = 123;
print(num);
print(num << 2);
print(num << 4);
print(-1);
/*
00000000000000000000000001111011 num=123
00000000000000000000000111101100
00000000000000000000011110110000
*/
//2.整型的最大范围
int a=Integer.MAX_VALUE;
int b=1233;
int c=2345;
print(b);
print(c);
System.out.println("==========");
print(b|c);
System.out.println();
//3.右移
int e=Integer.MIN_VALUE;
print(e>>2);//带符号右移,用符号位补齐 11100000000000000000000000000000
print(e>>>3);//不带符号位右移,用0补齐 00010000000000000000000000000000
//4.获取相反数,正负都可以
int x=1;
int y=(~x)+1; //底层还会取反加1,所有有两次取反加1
}
//打印整数底层的32位是什么
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();
}
}