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

一、代码如下:
	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
功能:输出十进制的二进制表达式

博文参考:
Java打印整数的二进制表示(代码与解析)

猜你喜欢

转载自mingyundezuoan.iteye.com/blog/2398640