package Recursive;
import java.util.Scanner;
public class Exercise18_21 {
public static void main(String[] args) {
System.out.print("Enter a decimal: ");
int value = new Scanner(System.in).nextInt();
System.out.println("The binary of decimal " + value + " is " + dec2Bin(value));
}
/** 返回十进制的二进制表示 */
public static String dec2Bin(int value) {
if (value < 0) return "";
return (value == 0) ? "0" : (dec2Bin(value / 2) + (value % 2));
}
}
package revision;
import java.util.Arrays;
/**
* @create: 2023/10/25
* @Description:
* @FileName: Main
*/
public class Main {
public static void main(String[] args) {
for (int i = 65535; i >= 0; i--) {
boolean equaled;
// 正数
equaled = Integer.toBinaryString(i).equals(dec2Bin(i));
if (!equaled) {
System.out.println("Not equal");
break;
}
// 负数
equaled = Integer.toBinaryString(-i).equals(dec2Bin(-i));
if (!equaled) {
System.out.println("Not equal");
break;
}
}
}
/** 返回十进制的二进制表示 */
public static String dec2Bin(int value) {
if (0 == value) return "0"; // 值为0,返回'0'
return (value > 0) ? toBinaryString(value) :
toBinaryString(toBinaryString(-value));
}
/** 返回正数的二进制表示 */
private static String toBinaryString(int value) {
return value <= 0 ? "" : toBinaryString(value >> 1) + (value & 1);
}
/** 返回负数的二进制表示 */
private static String toBinaryString(String bitValue) {
char[] bits = new char[32]; // 负数二进制数组
int len = bits.length - bitValue.length();
Arrays.fill(bits, 0, len, '1'); // 填充反码
for (int i = len; i < bits.length; i++) { // 对 bitValue 取反
bits[i] = bitValue.charAt(i - len) == '1' ? '0' : '1';
}
// 二进制末尾 + 1
for (int i = bits.length - 1; i >= 0; i--) {
if ('0' == bits[i]) {
bits[i] = '1';
break;
}
bits[i] = '0';
}
return Arrays.toString(bits).replaceAll("[ ,\\[\\]]", "");
}
}