Monday, September 25, 2006
자바/Java] 2진수, 8비트씩 나누어 출력, 앞쪽 공백 제로(0)로 채우기
자바 프로그래밍에서 이진수 다루기에 대한 포스트입니다.
▶▶ 자바/Java] 십진수를 이진수로 변환 - 10진수 / 2진수(Binary) 진법 <- 이 게시물의 이진수 출력은 앞의 빈 칸 (Leading Zeros) 을 0으로 채우지 않고, 그리고 32비트가 한덩어리로 되어 있어서 읽기에 불편합니다.
따라서 기다란 2진수 문자열을 8자씩 나누어,
01110100 01011011 00010001 10001010
이런 식으로 알기 쉽게 출력하는 프로그램을 만들어 보았습니다.
n 이라는 변수에, 필요한 int 정수 즉 32비트 정수를 기입하고 컴파일하면 결과가 나옵니다.
파일명: Foo.java
※ 아래 박스 클릭 후, 키보드 화살표 키로 좌우 스크롤 가능함
비트 연산을 할 때에는 이런 식의 출력이 편리할 것입니다.
▶▶ 자바/Java] 십진수를 이진수로 변환 - 10진수 / 2진수(Binary) 진법 <- 이 게시물의 이진수 출력은 앞의 빈 칸 (Leading Zeros) 을 0으로 채우지 않고, 그리고 32비트가 한덩어리로 되어 있어서 읽기에 불편합니다.
따라서 기다란 2진수 문자열을 8자씩 나누어,
01110100 01011011 00010001 10001010
이런 식으로 알기 쉽게 출력하는 프로그램을 만들어 보았습니다.
n 이라는 변수에, 필요한 int 정수 즉 32비트 정수를 기입하고 컴파일하면 결과가 나옵니다.
2진수 읽기 쉽게 출력
파일명: Foo.java
※ 아래 박스 클릭 후, 키보드 화살표 키로 좌우 스크롤 가능함
public class Foo {
public static void main(String args[]) {
int n = 1952125322;
String s = "", s2 = "";
for (int i = 0; i < Integer.numberOfLeadingZeros(n); i++) s += "0"; // 0을 빈자리 개수만큼 만들어 전진 배치
s += Integer.toBinaryString(n); // 10진수를 2진수화하여 합치기
for (int i = 0; i < 32; i+= 8) s2 += s.substring(i, i + 8) + " "; // 2진수를 8개씩 공백으로 나누어 묶기
System.out.println(s2);
// 출력 결과 예제
//
// 1952125322 의 이진수 출력: 01110100 01011011 00010001 10001010
// 0 의 이진수 출력: 00000000 00000000 00000000 00000000
// 0xF 의 이진수 출력: 00000000 00000000 00000000 00001111
// 0xFF 의 이진수 출력: 00000000 00000000 00000000 11111111
// 0xFFF 의 이진수 출력: 00000000 00000000 00001111 11111111
// 0xFFFF 의 이진수 출력: 00000000 00000000 11111111 11111111
// 0xFFFFF 의 이진수 출력: 00000000 00001111 11111111 11111111
// 0xFFFFFF 의 이진수 출력: 00000000 11111111 11111111 11111111
// 0xFFFFFFF 의 이진수 출력: 00001111 11111111 11111111 11111111
// 0xFFFFFFFF 의 이진수 출력: 11111111 11111111 11111111 11111111
}
}
public static void main(String args[]) {
int n = 1952125322;
String s = "", s2 = "";
for (int i = 0; i < Integer.numberOfLeadingZeros(n); i++) s += "0"; // 0을 빈자리 개수만큼 만들어 전진 배치
s += Integer.toBinaryString(n); // 10진수를 2진수화하여 합치기
for (int i = 0; i < 32; i+= 8) s2 += s.substring(i, i + 8) + " "; // 2진수를 8개씩 공백으로 나누어 묶기
System.out.println(s2);
// 출력 결과 예제
//
// 1952125322 의 이진수 출력: 01110100 01011011 00010001 10001010
// 0 의 이진수 출력: 00000000 00000000 00000000 00000000
// 0xF 의 이진수 출력: 00000000 00000000 00000000 00001111
// 0xFF 의 이진수 출력: 00000000 00000000 00000000 11111111
// 0xFFF 의 이진수 출력: 00000000 00000000 00001111 11111111
// 0xFFFF 의 이진수 출력: 00000000 00000000 11111111 11111111
// 0xFFFFF 의 이진수 출력: 00000000 00001111 11111111 11111111
// 0xFFFFFF 의 이진수 출력: 00000000 11111111 11111111 11111111
// 0xFFFFFFF 의 이진수 출력: 00001111 11111111 11111111 11111111
// 0xFFFFFFFF 의 이진수 출력: 11111111 11111111 11111111 11111111
}
}
비트 연산을 할 때에는 이런 식의 출력이 편리할 것입니다.
tag: java
자바 | Java
<< Home