java打印一个int类型的二进制

int类型占4个字节,一个字节8位,int共占32位。java中的int是无符号的(c语言还区分int整形和unsigned int无符号整型),取值范围 -231~231-1。

二进制数在内存中以补码的形式存储的

正数:补码就是转化为二进制

负数:补码符号位是1,其它位是对应正数的二进制的取反加一

例如2的二进制就是:00000000000000000000000000000010 左起第一位是符号位, 0表示正数,其余后面31位是数值位。

-2的二进制是:11111111111111111111111111111110 ,左起第一位是符号位是1表示负数,后面31位是2的二进制取反加一。

给出一个int的十进制数字,比如2,怎么用java程序打印出它的二进制表示00000000000000000000000000000010呢?

思路:我们看到的十进制 int a = 2; 只是java给我们做了格式化显示成了“2”,我们心里很清楚底层存储是00000000000000000000000000000010,要是能和计算机进行一个沟通,去到内存中找到a这块内存区域,拿一根探针,挨个问每一块小内存是0还是1,然后你把结果打印出来就能显示出二进制表示了。int有32位,所以我们就需要拿着“探针”问内存32次才能得到每一位是0还是1,怎么寻找这根“探针”呢?

可以用

10000000000000000000000000000000,

01000000000000000000000000000000,

00100000000000000000000000000000,

00010000000000000000000000000000,

......

00000000000000000000000000000010,

00000000000000000000000000000001,

这样的,从第32位一直到第1位,一次只有一位是1,其它位都是0的,32个二进制数做“探针”。与2(的二进制)进行与(&)32次,这一系列“探针”数字有个特点就是,第n个“探针”和2与之后,如果是1说明2的二进制当前位是1,如果是0说明2的当前位是0。

**第一次与**

探针: 10000000000000000000000000000000

2的二进制:00000000000000000000000000000010

结果: 0

**第二次与**

探针 :01000000000000000000000000000000

2的二进制:00000000000000000000000000000010

结果: 0

**第三次与**

探针 :00100000000000000000000000000000

2的二进制:00000000000000000000000000000010

结果: 0

......

第31次与

探针: 00000000000000000000000000000010

2的二进制:00000000000000000000000000000010

结果: 1

第32次与

探针: 00000000000000000000000000000001

2的二进制:00000000000000000000000000000010

结果: 0

java代码:

public static void print(int num){

for(int i=31;i>=0;i--){

System.out.print((num & 1 << i)) == 0 ? "0":"1");

}

}

解释:

for循环里每次num和1右移i位进行与操作,i从31开始,每次减减,一直到0,正好是32位,这就是上面说的32个探针,去探测num的当前位是0还是1。

验证:

print(2); 输出00000000000000000000000000000010

print(-2); 输出11111111111111111111111111111110 (符号位是1,数值位是2的二进制取反加一,正确)

print(100);输出00000000000000000000000001100100

说明print函数正确。

欢迎关注个人公众号一起交流学习:

java long 二进制输出格式_算法:java打印int类型的二进制格式相关推荐

  1. java项目----教务管理系统_基于Java的教务管理系统

    java项目----教务管理系统_基于Java的教务管理系统 2022-04-22 18:18·java基础 最近为客户开发了一套学校用教务管理系统,主要实现学生.课程.老师.选课等相关的信息化管理功 ...

  2. java数组可扩展_[转载]Java数组扩容算法及Java对它的应用

    Java数组扩容的原理 1)Java数组对象的大小是固定不变的,数组对象是不可扩容的. 2)利用数组复制方法可以变通的实现数组扩容. 3)System.arraycopy()可以复制数组. 4)Arr ...

  3. java游戏将相_(Java)算法——位运算基础及基本应用

    位运算基础及基本应用 在处理整形数值时,可以直接对组成整形数值的各个位进行操作.这意味着可以使用屏蔽技术获得整数中的各个位(??) 位运算是针对整数的二进制进行的位移操作 整数 32位 , 正数符号为 ...

  4. Java打印int类型二进制

    在java中,int类型是4个字节,一共32位. java中int有正负,所以int类型表示范围位是 -(2^(31))到 2^(31)-1 如何打印一个int类型的变量的二进制? 因为有32位置,所 ...

  5. java实现图片切割_【Java】K-means算法Java实现以及图像切割

    1.K-means算法简述以及代码原型 总的来讲,k-means聚类须要下面几个步骤: ①.初始化数据 ②.计算初始的中心点,能够随机选择 ③.计算每一个点到每一个聚类中心的距离.而且划分到距离最短的 ...

  6. java整数常量区_在Java中,我可以用二进制格式定义一个整数常量吗?

    所以,随着Java SE 7的发布,二进制表示法是标准的. 如果你对二进制有一个很好的理解,语法是非常简单明了的. byte fourTimesThree = 0b1100; byte data = ...

  7. java客服系统_阿里Java内部资料:2020最全Java技术栈(架构篇+算法篇+大数据)

    我只截图不说话,PPT大全,氛围研发篇.算法篇.大数据.Java后端架构!除了大家熟悉的交易.支付场景外,支撑起阿里双十一交易1682亿元的"超级工程"其实包括以下但不限于客服.搜 ...

  8. java 二进制 定义_在Java中,我可以用二进制格式定义一个整数常量吗?

    所以,随着Java SE 7的发布,二进制符号标准开箱即用.语法是非常直接和明显的,如果你有一个良好的理解二进制: byte fourTimesThree = 0b1100; byte data = ...

  9. java整段标记_聊聊JAVA GC系列(7) - 标记整理算法

    在介绍"平平无奇"的标记清除算法时, 还留下了另一个问题, 就是内存碎片的问题. 内存碎片的问题是指, 每次回收的内存都是比较分散的, 可以加起来是一个比较大的数值, 但是由于可用 ...

最新文章

  1. 庖丁解牛迭代器,聊聊那些藏在幕后的秘密 1
  2. Winform中使用FastReport实现简单的自定义PDF导出
  3. 编码(2)从字节理解Unicode(UTF8/UTF16)
  4. [转]localCache与集中式cache
  5. ssm+maven+eclipse框架搭建
  6. 周五下午3.5h直播丨今年第1期大咖讲坛:数据库高可用容灾方案的实践与探索...
  7. Linux是实时系统还是分时操作系统?
  8. python导入鸢尾花数据集_python KNN算法实现鸢尾花数据集分类
  9. ISSCC2021 基于SRAM的存内计算16.3阅读记录
  10. Javascript闭包 ,JS中没有public,private等修饰词,里面的变量就分为globle和局部变量
  11. postgresql12-timescaleDB多节点部署安装
  12. gwipr70驱动天空_win7 kmplayer plus设置_gwi pr2 pluswin7驱动_kmplayerplus官方下载
  13. redmine backlogs的tracker使用
  14. mac dock 隐藏程序_从Dock删除最近的应用程序
  15. Linux——Vim编辑器三种模式(命令模式、输入模式、末行模式)的基本使用总结
  16. IIS启动失败,发生意外错误 0x8ffe2740的解决方法
  17. cannot find method ‘value‘
  18. 学习笔记整理——vim,vim文件编码,vim配置文件
  19. 查看网络通不通的几种方法
  20. MATLAB Simulink 仿真

热门文章

  1. 小米MIX4最新渲染图曝光;苹果首款OLED iPad将于2023年问世;格力将引进鸿蒙操作系统|极客头条...
  2. 开发人员生产力指南,细节决定成败!
  3. 改变程序设计、图灵奖得主、美国第一位计算机科学女博士,程序媛进击史
  4. 鲲云获数千万A轮融资:开发全球首颗数据流AI芯片,实现数据流架构的创新突破!
  5. 苹果:App Store中国区无版号游戏8月1日起下架;美国计划打造量子互联网;HHVM 4.67 发布 | 极客头条...
  6. 腾讯云首次披露虚拟化技术发展线路图,看好轻量级虚拟化的潜力
  7. 初级 IT 管理者,如何打通任督二脉?
  8. 开源无疆!CSDN 董事长蒋涛、GitHub 副总裁 Thomas Dohmke 即将重磅对话
  9. 中国移动:部分 5G 手机可能有网连不上;iOS 13 出现严重漏洞;ReactOS 0.4.12发布 | 极客头条​...
  10. 微信停机断网可充话费;苹果正研发可折叠屏幕 iPad;Rust 1.36.0 发布 | 极客头条...