当前位置: 首页 > news >正文

【Java 面试合集】打印一个int整数的32位表示

打印一个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) * 22
  • 25 << 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

http://www.lryc.cn/news/22033.html

相关文章:

  • 这样在管理后台里实现 403 页面实在是太优雅了
  • c++提高篇——STL常用算法
  • Materials - DistanceField Nodes
  • 【ARMv8 编程】ARMv8 指令集介绍
  • 大数据之Phoenix基本介绍
  • 算法leetcode|38. 外观数列(多语言实现)
  • 异步交互的关键——Ajax
  • Android自定义View实现打钩签到动画
  • python+pytest接口自动化(3)-接口测试一般流程及方法
  • 《MySQL学习》 表中随机取记录的方式
  • 功率信号源有什么作用和功能呢
  • 一些cmake error fixed
  • CentOS 7安装Docker并使用tomcat测试
  • 隐私计算头条周刊(2.20-2.26)
  • 安装kibana 报错/访问不了
  • 【华为OD机试模拟题】用 C++ 实现 - 身高排序(2023.Q1)
  • MK60DX256VLQ10(256KB)MK60DN256VLQ10 Kinetis K60 MCU FLASH
  • Prometheus 告警模块配置深度解析
  • 《分布式技术原理与算法解析》学习笔记Day23
  • 毕业设计 基于51单片机的手机蓝牙控制8位LED灯亮灭设计
  • 一起Talk Android吧(第五百零八回:多层布局功能)
  • 丁小喜の兵器谱(学生管理系统)
  • linux:字符串拷贝的五种方法:使用指针下标,指针变量加偏移量,指针变量自加等
  • cesium常用方法汇集(工具篇)
  • 分布式一致性与共识算法(一)
  • C++---最长上升子序列模型---怪盗基德的滑翔翼(每日一道算法2023.2.27)
  • Python 之 Pandas 文件操作和读取 CSV 参数详解
  • 微服务的异步通信技术RabbitMQ
  • Word处理控件Aspose.Words功能演示:使用 C++ 在 Word (DOC/DOCX) 中添加或删除水印
  • chatGPT模型原理