Java打印整数的二进制表示(代码与解析)

int a=-99;
for(int i=0;i<32;i++){int t=(a & 0x80000000>>>i)>>>(31-i);System.out.print(t);
}

拆分一下这段代码,要理解这个移位输出的问题还需要理解的以下内容:
* 0x80000000是数的十六进制表示,转成二进制表示为10000000000000000000000000000000
* 运算的优先级,移位运算高于逻辑运算,>>>高于&
* 位逻辑与运算 1&1 = 1 ,0&1 = 0
* >>>无符号右移,移出部分舍弃,左边位补0;

for循环的语句块的执行顺序:
1 0x80000000 无符号右移 i位;
2 a 和 1的结果做按位与;
3 2的结果无符号右移31-i位
4 输出3的结果

-99的机器数(补码)表示
11111111111111111111111110011101
循环过程演示:
i = 0
1 10000000000000000000000000000000 >>> 0 = 10000000000000000000000000000000
2 11111111111111111111111110011101 & 10000000000000000000000000000000 = 10000000000000000000000000000000
3 10000000000000000000000000000000 >>> (31 - 0) = 00000000000000000000000000000001
4 输出00000000000000000000000000000001,屏显“1”

i = 1
1 10000000000000000000000000000000 >>> 1 = 01000000000000000000000000000000
2 11111111111111111111111110011101 & 01000000000000000000000000000000 = 01000000000000000000000000000000
3 10000000000000000000000000000000 >>> (31 - 1) = 00000000000000000000000000000001
4 输出00000000000000000000000000000001,屏显“1”

……

i = 30
1 10000000000000000000000000000000 >>> 30 = 00000000000000000000000000000010
2 11111111111111111111111110011101 & 00000000000000000000000000000010 = 00000000000000000000000000000000
3 00000000000000000000000000000000 >>> (31 - 30) = 00000000000000000000000000000000
4 输出00000000000000000000000000000000,屏显“0”

i = 31
1 10000000000000000000000000000000 >>> 31 = 00000000000000000000000000000001
2 11111111111111111111111110011101 & 00000000000000000000000000000001 = 00000000000000000000000000000001
3 00000000000000000000000000000001 >>> (31 - 31) = 00000000000000000000000000000001
4 输出00000000000000000000000000000001,屏显“1”

根据循环过程可以看出
(0x80000000 >>> i)的作用是mask,每次循环都与a做逻辑与操作,取a的第i位;
对上条结果>>> 31 - i作用是把取出的a的第i位移到最末位。

Java打印整数的二进制表示(代码与解析)相关推荐

  1. java输出二进制数_Java打印整数的二进制表示(代码与解析)

    int a=-99;for(int i=0;i<32;i++){int t=(a & 0x80000000>>>i)>>>(31-i); System ...

  2. java打印32位二进制

    java打印32位二进制 题解 public static void print(int num) {for (int i = 31; i >= 0; i--) {System.out.prin ...

  3. java编程打印以下图形,分享java打印简单图形的实现代码

    我们平时都是使用的画图工具进行简单图形的绘制,今天我们使用java打印一些简单的图形 实现代码如下 package test; /** * * @author hanzel * @打印图形 * */ ...

  4. java打印 好看的图形_分享java打印简单图形的实现代码

    我们平时都是使用的画图工具进行简单图形的绘制,今天我们使用java打印一些简单的图形 实现代码如下 package test; /** * * @author hanzel * @打印图形 * */ ...

  5. Java打印int类型二进制

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

  6. java long 二进制输出格式_算法:java打印int类型的二进制格式

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

  7. java心形代码_使用java打印心型、圆形图案的实现代码_java

    相信对于打印三角形都没什么难度,只需要利用for循环嵌套使用就行 但是对于打印圆形和三角形不同因为到圆心距离相等的点一般不会横坐标和纵坐标都为整数 打印爱心 爱心的公式 (x²+y²-1)³-x²*y ...

  8. java打印星型_使用java打印心型、圆形图案的实现代码

    相信对于打印三角形都没什么难度,只需要利用for循环嵌套使用就行 但是对于打印圆形和三角形不同因为到圆心距离相等的点一般不会横坐标和纵坐标都为整数 打印爱心 爱心的公式 (x²+y²-1)³-x²*y ...

  9. java打印心_使用java打印心型与圆形图案实现代码示例

    本篇文章小编给大家分享一下使用java打印心型与圆形图案实现代码示例,文章代码介绍的很详细,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看. 相信对于打印三角形都没什么难度,只 ...

最新文章

  1. 如何在Kubernetes里创建一个Nginx service
  2. linux重定向命令语法,linux的重定向命令应用及语法
  3. 你可能不知道的关于 Git stash 的技巧
  4. 如何让火狐浏览器兼容window.event
  5. 软件需求最佳实践笔记(一)
  6. protoc 命令 java_protoc 指令介绍
  7. ImageBox显示方式设置、打开图片文件
  8. 网页视频的下载方法,电脑如何下载网页视频
  9. C++:实现将华氏度转换为摄氏度
  10. 线性电阻电路方程的建立方法
  11. 顶会竞赛最后5天被Facebook超越,又大比分反超夺冠是什么体验?
  12. 华为Freebuds Pro 2开启智能高清L2HC后音质差,试试LDAC~
  13. 视频文件打不开怎么修复
  14. 第1056期机器学习日报(2017-08-09)
  15. 用C++写好一个基本的文本编辑软件
  16. NAS Ubuntu all in one软硬件方案
  17. IDC机房运维经验浅谈
  18. 使用redis中的zset进行金牌、银牌、铜牌的排序操作
  19. 信捷原创程序,8个伺服轴
  20. Java常用英语汇总

热门文章

  1. python末位1的位置_用Python黑了整个学院学姐的电话和QQ,爬虫牛皮!兄弟们耗子尾之!...
  2. 生物医学图片处理——怎样才算不当操作?
  3. 如何做一场精彩的学术报告?
  4. 第三天学习Java的笔记(自增自减,赋值,比较,逻辑,三元)
  5. python顺序结构实验_Python程序设计实验报告二:顺序结构程序设计
  6. 生日快乐编程代码_世界上最好的编程语言,刚刚度过了25周岁生日
  7. C++中如何使输出的1变成01
  8. Python + Django 如何支撑了 7 亿月活用户的 Instagram?
  9. 定时采用ajax方式获得数据库,《基于Ajax的在线客服系统的设计与实现》-毕业设计论文(学术).doc...
  10. html炫酷在线,小伙伴们都会惊呆的10个超炫的HTML5+CSS3效果作品