嗨,我正在创建一种方法,该方法将获取一个数字并将其与二进制表示一起打印。问题是我的方法为任何正数打印全 0,为任何负数打印全 1
private static void display( int number ){
System.out.print(number + "\t");
int mask = 1 << 31;
for(int i=1; i<=32; i++) {
if( (mask & number) != 0 )
System.out.print(1);
else
System.out.print(0);
if( (i % 4) == 0 )
System.out.print(" ");
}
}
我明白了:这有效:
/**
* prints the 32-bit binary representation of a number
* @param number the number to print
*/
private static void display( int number ){
//display number and a tab
System.out.print(number + "\t");
//shift number 31 bits left
int mask = 1 << 31;
//loop and print either 1 or 0
for(int i=31; i>=0; i--) {
if( ((1 << i)&number) != 0)
System.out.print(1);
else
System.out.print(0);
//every four bits print a space
if( (i % 4) == 0 )
System.out.print(" ");
}
//print new line
System.out.println();
}