mwultong Blog ... 프로그래밍 / 계산기

컴퓨터 엑셀 워드 포토샵 구글어스 WINDOWS JAVASCRIPT JAVA C++

 
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비트 정수를 기입하고 컴파일하면 결과가 나옵니다.


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

  }
}



비트 연산을 할 때에는 이런 식의 출력이 편리할 것입니다.




tag: java
자바 | Java

0 Comments:

<< Home RSS 2.0 feed

구글 Google 에서 제공하는 무료 블로그 서비스인 블로거 Blogger 의 인터넷 주소는 www.blogger.com 입니다. Blogger 에 블로그를 만들면, blogspot.com 이라는 주소에 블로그가 생성됩니다.
블로그를 직접 방문하지 않고도 최신 게시물을 구독하려면 RSS 2.0 feed 주소를 리더기에 등록하시면 됩니다.
Previous Posts
Monthly Archives
Top