正负十进制转二进制


import java.util.Scanner ;

public class BinaryConverter {

public static void main( String[] args ) {

Scanner s = new Scanner( System.in );

System.out.println( "请输入一个整数:" );

int inputNumber = s.nextInt() ; // 读取用户输入的整数
int sign ; // 声明一个变量用来记录整数的符号 ( 约定 正数用 1 、零用 0 、负数用 -1 表示 )
int absoluteValue ;

if( inputNumber > 0 ){
sign = 1 ;
absoluteValue = inputNumber ; // 正整数
} else if ( inputNumber == 0 ) {
sign = 0 ;
absoluteValue = inputNumber ; // 0
} else {
sign = -1 ;
absoluteValue = -inputNumber ; // 负整数
}

String b = "" ;
// 根据绝对值求原码 ( 求一个正整数的原码 )
int x = sign > 0 ? absoluteValue : absoluteValue - 1 ;
System.out.println( x );
while( x != 0 )
{
int y = x % 2 ;
if( sign > 0 ) {
b = y + b ;
} else {
b = ( y == 0 ? 1 : 0 ) + b ;
}
x /= 2 ;
}

int n = 32 - b.length() ; // 统计需要在高位补充的 0 或 1

for( int i = 0 ; i < n ; i++ ) {
b = ( sign >= 0 ? "0" : "1" ) + b ;
}

System.out.println( b );
System.out.println( b.length() );


/* 可以借助于位运算实现 ( 效率是最高的 ) [ 鸣谢 : 丁锦权 ]
String b = "" ;
int a = s.nextInt();
for(int i=0;i<32;i++){
int t=( a & 0x80000000 >>> i ) >>> (31-i) ;
b = b + t ;
}
*/

s.close();

}

}

猜你喜欢

转载自www.cnblogs.com/wxlmdx/p/12898661.html
今日推荐