深圳设计网站有限公司,万网建网站教程,做ctf的网站有哪些,杭州网站排名优化公司打印一个int整数的32位表示
1. 概述 嗨#xff0c;大家好【Java 面试合集】又来了#xff0c;今天给大家分享的主题是打印一个int整数的32位表示. 2. 32位分析
2.1 为什么是32位呢
不知道看到这篇文章的各位是否都知道#xff0c;一个int类型的表示方式就是32位呢#x…打印一个int整数的32位表示
1. 概述 嗨大家好【Java 面试合集】又来了今天给大家分享的主题是打印一个int整数的32位表示. 2. 32位分析
2.1 为什么是32位呢
不知道看到这篇文章的各位是否都知道一个int类型的表示方式就是32位呢 为什么呢
其实很简单啊因为一个int的占4个字节, 而每个字节占8个比特位所以就是32位了。
但是我们肉眼看到的都是十进制比如4, 10等那么我们如果知道用32位怎么表示呢
public class Test001 {public static String print(int num) {String res ;for (int i 31; i 0 ; i - 1) {res ((num (1 i)) 0) ? 0 : 1;}return res;}
}2.2 位运算的分析
其实大家多多少都使用过位运算但是与运算有什么特点呢就是满足同一位置上都是1的情况就是1反之就是0. 如下代码
// 0000 1101 0011
// 0000 1000 0000// 结果
// 0000 1000 000所以只有满足同时为1的时候结果才是1.
所以上述代码中 我们需要每一位都去才能得到最后的结果。
2.3 左移 讲解
其实我们都知道计算机底层都是按2进制运算的。所以左移其实就是将1向左移动n位(二进制值不变但是位置一直左移)如下代码
// 1 0 00000000000000000000000000000001
// 1 1 00000000000000000000000000000010
// 1 2 00000000000000000000000000000100
// 1 31 10000000000000000000000000000000我们可以发现其实每次都将1左移动到对应的位置。
那么 8 3 这种怎么表示呢
其实可以理解为 (1 3) * 8. 所以结果就是64. 下列以此类推:
22 4 (1 4) * 2225 6 (1 6) * 25
3. 特殊值的分析
System.out.println(print(Integer.MAX_VALUE)); // 01111111111111111111111111111111
System.out.println(print(Integer.MIN_VALUE)); // 10000000000000000000000000000000虽然说int类型可以用32位来表示但是其实真正可以使用的只有31位因为第一个是符号位。如果第一位是0的话表示正数反之如果是1的话表示负数。
4. 反码以及补码
其实补码就是负数的表示形式。那反码以及补码如何表示呢
反码就是二进制上每个位置的值都取反就是反码 补码就是反码的结果 1