欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

输出十进制数字的二进制数的表示

程序员文章站 2022-03-08 15:04:15
...
一、代码如下:

public static void main(String[] args) {
int a = -10 ;
for(int i=0;i<32;i++){
int t = (a & 0x80000000>>>i)>>>(31-i);
System.out.print(t);
}

// String binaryString = Integer.toBinaryString(-10);
// System.out.println(binaryString);
}



二、分析流程

JAVA 中 int 4 字节 = 4*8 = 32 bit 32位
十:10
二:00000000000000000000000000001010(原码,即机器数)
反:11111111111111111111111111110101
补:11111111111111111111111111110110(原码的补码即负数的原码)
十:-10(负数:正数的原码取反码再加1,即原码的补码)
二:11111111111111111111111111110110

>>> 强制向右移动,优先级高于 &


0x 十六进制
0x80000000 = 10000000000000000000000000000000(二)

i=0
10000000000000000000000000000000 >>> 0 = 10000000000000000000000000000000
10000000000000000000000000000000
&11111111111111111111111111110110
---------------------------------
10000000000000000000000000000000
10000000000000000000000000000000 >>> 31 = 1

i=1
10000000000000000000000000000000 >>> 1 = 01000000000000000000000000000000
01000000000000000000000000000000
&11111111111111111111111111110110
---------------------------------
01000000000000000000000000000000
01000000000000000000000000000000 >>> 30 = 1

a & 0x80000000>>>i 取a左侧第i位,其余位均为0
(a & 0x80000000>>>i)>>>(31-i) 右移动31-i位,右移左侧补0,移动后剩余上面操作的第i位的数字,即将第i位移动到最数字末位,左侧全部为0
功能:输出十进制的二进制表达式

博文参考:
[url=http://www.cnblogs.com/100thMountain/p/5447325.html]Java打印整数的二进制表示(代码与解析)[/url]
相关标签: 十进制转二进制