打印int类型整数的二进制
-1的32位是,32个1:11111111111111111111111111111111
int的最小值Integer.MIN_VALUE的32位是:10000000000000000000000000000000
2的31次方为(2^31) 10000000 00000000 00000000 00000000
2的32次方-1为(2^32-1): 11111111 11111111 11111111 11111111
| | |
-------------------------------------------------------------->
-2^31 0 2^31-1
int的所有个数为2^32个[即2^31个负数+(2^31-1)个正数+1个0]
且:&,都为1,结果才为1,否则为0。
或:|,只要有一个为1,结果则为1。
异或:^,相同为0,不同为1。
package class01;
//一个整数n的负数等于,n取反再加1。
//-n = ~n +1
/**
* 打印int类型的数的二进制。即32位。
*/
public class Code06_printB {
public static void main(String[] args) {
int num = 16;
printBin(num);
printBin(9);
printBin(17);
int i = 9 ^ 17;
System.out.println("i = " + i);//24
System.out.println("-----");
System.out.println(~0-1);
printBin(~0-1);
printBin(~0);
printBin(-1);
System.out.println("-----");
printBin(0);
printBin(Integer.MIN_VALUE);
printBin(Integer.MAX_VALUE);
}
private static void printBin(int num) {
for (int i = 31; i >= 0; i--) {
System.out.print((num & (1 << i)) == 0 ? "0" : "1");
}
System.out.println();
}
}
运行结果:
00000000000000000000000000010000
00000000000000000000000000001001
00000000000000000000000000010001
i = 24
-----
-2
11111111111111111111111111111110
11111111111111111111111111111111
11111111111111111111111111111111
-----
00000000000000000000000000000000
10000000000000000000000000000000
01111111111111111111111111111111
algorithm_novice分类中,为我听左程云讲解后的个人小结,如有问题请指正。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· winform 绘制太阳,地球,月球 运作规律
· 上周热点回顾(3.3-3.9)