[java] Java에서 이진 형식으로 정수 인쇄

숫자가 있고 이진수로 인쇄하고 싶습니다. 알고리즘을 작성하여하고 싶지 않습니다 .Java에 내장 기능이 있습니까?



답변

“내장”을 의미한다고 가정합니다.

int x = 100;
System.out.println(Integer.toBinaryString(x));

정수 설명서를 참조하십시오 .

( Long유사한 방법 BigInteger이 있고 기수를 지정할 수있는 인스턴스 방법이 있습니다.)


답변

여기서는 바이너리 나 다른 형식에만 의존 할 필요가 없습니다. 융통성있는 내장 함수를 사용할 수 있습니다. 프로그램에서 원하는 형식을 인쇄합니다. Integer.toString (int, representation);

Integer.toString(100,8) // prints 144 --octal representation

Integer.toString(100,2) // prints 1100100 --binary representation

Integer.toString(100,16) //prints 64 --Hex representation


답변

System.out.println(Integer.toBinaryString(343));


답변

물건을 멋지게 인쇄하고 n 비트마다 비트를 분리하는 것이 필요했습니다. 즉, 앞에 0을 표시하고 다음과 같이 표시하십시오.

n = 5463
output = 0000 0000 0000 0000 0001 0101 0101 0111

내가 쓴 것은 다음과 같습니다.

/**
 * Converts an integer to a 32-bit binary string
 * @param number
 *      The number to convert
 * @param groupSize
 *      The number of bits in a group
 * @return
 *      The 32-bit long bit string
 */
public static String intToString(int number, int groupSize) {
    StringBuilder result = new StringBuilder();

    for(int i = 31; i >= 0 ; i--) {
        int mask = 1 << i;
        result.append((number & mask) != 0 ? "1" : "0");

        if (i % groupSize == 0)
            result.append(" ");
    }
    result.replace(result.length() - 1, result.length(), "");

    return result.toString();
}

다음과 같이 호출하십시오.

public static void main(String[] args) {
    System.out.println(intToString(5463, 4));
}


답변

오래된 학교:

    int value = 28;
    for(int i = 1, j = 0; i < 256; i = i << 1, j++)
        System.out.println(j + " " + ((value & i) > 0 ? 1 : 0));


답변

public static void main(String[] args)
{
    int i = 13;
    short s = 13;
    byte b = 13;

    System.out.println("i: " + String.format("%32s",
            Integer.toBinaryString(i)).replaceAll(" ", "0"));

    System.out.println("s: " + String.format("%16s",
            Integer.toBinaryString(0xFFFF & s)).replaceAll(" ", "0"));

    System.out.println("b: " + String.format("%8s",
            Integer.toBinaryString(0xFF & b)).replaceAll(" ", "0"));

}

산출:

i: 00000000000000000000000000001101
s: 0000000000001101
b: 00001101


답변

이 논리가 숫자를 어떤 기본으로 변환 할 수 있는지 확인하십시오.

public static void toBase(int number, int base) {
    String binary = "";
    int temp = number/2+1;
    for (int j = 0; j < temp ; j++) {
        try {
            binary += "" + number % base;

            number /= base;
        } catch (Exception e) {
        }
    }
    for (int j = binary.length() - 1; j >= 0; j--) {
        System.out.print(binary.charAt(j));
    }
}

또는

StringBuilder binary = new StringBuilder();
int n=15;
while (n>0) {
    if((n&1)==1){
        binary.append(1);
    }else
        binary.append(0);
    n>>=1;
}
System.out.println(binary.reverse());