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输出二进制数_Java打印整数的二进制表示(代码与解析)相关推荐

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

    Java打印整数的二进制表示(代码与解析) int a=-99; for(int i=0;i<32;i++){int t=(a & 0x80000000>>>i)> ...

  2. java输出字体_Java打印字体拉伸

    我只是让打印机在 java中工作我也需要它,但是我需要解决的最后一个问题.当它打印时,字体的宽度相当拉伸,并且不像它应该的那样清晰和清晰. 这是我的代码我的实际绘图到论文: FontMetrics m ...

  3. java输出钻石_java - 用Java打印钻石形状 - 堆栈内存溢出

    我想在Eclipse的输出控制台上打印网格形状. 基本上,我从用户那里得到一个整数,它是网格单个边框中的星星数. 这里是我到目前为止的代码: import java.util.Scanner; pub ...

  4. java字符串输出换行_java 打印例子(字符串换行问题)

    1.打印例子 java打印中最关键的就是每一个绘图函数 g2.drawString(str, x, y ) 中的起点坐标(x,y) import java.awt.BasicStroke; impor ...

  5. java输出不同颜色_Java设计模式-策略模式、状态模式

    推荐阅读: 一只Tom猫:都是"Redis惹的祸",害我差点挂在美团三面,真是"虚惊一场"! java喵:6大面试技能树:JAVA基础+JVM+算法+数据库+计 ...

  6. Java输出数组中最长递增子序列的代码

    下面内容是关于Java输出数组中最长递增子序列的内容,希望对大伙有较大用途. package com.wzs;import java.util.ArrayList; import java.util. ...

  7. java中输出日历_Java打印日历表

    今天来吐槽一下Java的Calendar类的使用问题,反正我是弄了半天. 首先是,遇到一个问题,输入年份和月份,需要打印这个月的日历,网上有不少代码,但我用了几个感觉都不是很靠谱. 然后经过一番探索, ...

  8. java输出钻石_Java:递归打印钻石

    如果给定大小,你将如何使用Java递归打印钻石? 大小为5会产生: ***** ***** **** **** *** *** ** ** * * * * ** ** *** *** **** *** ...

  9. java输出钻石_Java程序打印钻石形状

    可以通过先打印三角形再打印倒三角形来打印菱形.一个例子如下:* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *  ...

最新文章

  1. Python 技术篇-设置windows开机自动启用Jupyter服务,BAT批处理脚本启用jupyter服务设置,设置jupyter默认启动位置的方法
  2. java当中日期类的相关操作(学习笔记)
  3. 新浪微博之XSS蠕虫脚本源码讲解
  4. LeetCode 1430. 判断给定的序列是否是二叉树从根到叶的路径(递归)
  5. 会买单吗?李楠创办的怒喵科技发布新品牌了,推出潮流无线桌面产品
  6. 桌面 NAS 是什么
  7. IIS URLReWrite URL 重写模块 下载地址
  8. kong 网关教程入门
  9. 汉字统计--统计给定文本文件中汉字的个数。
  10. 「公众号吸粉神级插件」实现网站下载文件需要公众号获取验证码
  11. 最近一直在好奇一个问题,QWE到底等不等于ABC? -.- .. --.- .-.. .-- - ..-. -.-. --.- --. -. ... --- --- flag格式:CTF{xxx}
  12. 模板匹配及其源代码---Edge Based Template Matching
  13. CSS-----颜色值的缩写和字体的缩写方法
  14. oracle快照方案,【DBA及开发必备】全解ORA-1555快照太旧错误原理及解决方案
  15. 推特登录出错后没有拿到错误返回
  16. xmp是什么格式的文件
  17. 现有边缘检测技术和 方法
  18. ASP.NET常见命名空间及其功能描述
  19. 基于麒麟SP10服务器版的Kubernetes集群安装
  20. ubuntu 终端显示英文,桌面环境显示中文方法

热门文章

  1. 大工20春《计算机文化基础》在线测试3,大工20春《计算机文化基础》在线测试3题目【标准答案】...
  2. 性能测试(02)-HttpSampler
  3. docker中部署Nginx
  4. 研究一个新的功能的时候,如何获取该资源的文档
  5. 从源码角度看Android系统Launcher在开机时的启动过程
  6. 平滑均值滤波讲解-Matlab
  7. 计算机主机磁盘怎么开,电脑bios怎么设置硬盘启动
  8. python里面两个大于号_【课堂笔记】Python常用的数值类型有哪些?
  9. redis 哨兵_Redis哨兵配置
  10. Qt 实现串口终端控制台,适配RT-Thread的FinSH控制台功能(提供qt源码)