Java_十进制整数转换为二进制
import java.util.Scanner;
/*
* 十进制转换为二进制
* @author Chill_Lyn
*
*/
public class Convertion10To2 {
// 存正数的二进制
private StringBuilder sb;
// 存负数的二进制
private StringBuilder sb2;
private Scanner scanner;
// 十进制数
private int num;
// 键盘输入
private void scanner() {
scanner = new Scanner(System.in);
System.out.print("number:");
num = scanner.nextInt();
}
// 转换方法
public void convert10To2() {
sb = new StringBuilder();
sb2 = new StringBuilder();
scanner();
// 正整数
if (num > 0) {
while (num != 0) {
sb.append(num % 2);
num = num / 2;
}
sb.reverse();
System.out.println(sb.toString());
// 负整数
} else if (num < 0) {
//负数先换成正数
num = -num;
while (num != 0) {
//取反
sb.append((num % 2 == 0) ? 1 : 0);
num = num / 2;
}
// 进位
int carry = 0;
for (int i = 0; i < sb.length(); i++) {
// 以下注意,(Integer.valueOf(sb.charAt(i))为字符'0''1'的ASCII值48 49,需转成字符串
//+1
if (i == 0) {
if (Integer.valueOf(sb.charAt(i) + "") + 1 == 2) {
sb2.append(0);
carry = 1;
} else if (Integer.valueOf(sb.charAt(i) + "") + 1 == 1) {
sb2.append(1);
carry = 0;
}
} else {
if (Integer.valueOf(sb.charAt(i) + "") + carry == 2) {
sb2.append(0);
carry = 1;
} else if (Integer.valueOf(sb.charAt(i) + "") + carry == 1) {
sb2.append(1);
carry = 0;
} else if (Integer.valueOf(sb.charAt(i) + "") + carry == 0) {
sb2.append(0);
carry = 0;
}
}
}
sb2.reverse();
System.out.println(sb2.toString());
// 整数0
} else {
System.out.println(0);
}
}
public static void main(String[] args) {
Convertion10To2 test1 = new Convertion10To2();
test1.convert10To2();
test1.convert10To2();
test1.convert10To2();
}
}
结果
需要注意的是,这里没有打印符号位,正数默认前面全是0,负数默认前面全是1.