首页 > 其他 > 详细

正负十进制转二进制

时间:2020-05-16 09:50:46      阅读:43      评论:0      收藏:0      [点我收藏+]


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();

}

}

正负十进制转二进制

原文:https://www.cnblogs.com/wxlmdx/p/12898661.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!