본문 바로가기

JAVA 부족한 부분 공부

비트, 바이트 와 진수의 상관관계

1 bit (2^1) = 0 , 1 

즉 , 숫자를 0과 1로 표현 가능하다. ==> 2진수

 

2 bit (2^2) = (0 0), (0 1), (1 0), (1 1) 

즉, 숫자를 0, 1, 2, 3 로 표현 가능하다. ==> 4진수

 

3 bit (2^3) = (0 0 0), (0 0 1), (0 1 0), (0 1 1), (1 0 0), (1 0 1), (1 1 0), (1 1 1)

즉, 숫자를 0, 1, 2, 3, 4, 5, 6 ,7 로 표현 가능하다. ==> 8진수

 

4 bit (2^4) = (0 0 0 0) ..... (1 1 1 1)

즉 숫자를 0 ~ 15 까지 표현 가능하다. ==> 16진수

 

8 bit (2^8)  = (0 0 0 0 0 0 0 0)  .... (1 1 1 1 1 1 1 1)

(== 1byte)

즉 숫자를 0~ 256 까지 표현 가능하다. ==> 256진수

 

8bit 는 2자리수의 16진수로 표기 가능하다.

왜?        0 0 0 0            0 0 0 0

    (4bit => 16진수 ) (4bit => 16진수 )

 

따라서 1byte는 2자리의 16진수로 표현 가능하다.

 

8진수, 16진수를 10진수로 변환하여 출력하는 알고리즘 문제 해설

==> seeminglyjs.tistory.com/112

 

백준 BaekJoon 11816번: 8진수, 10진수 16진수 [Java] 자바

2020-09-22 문제 정수 X가 주어진다. 정수 X는 항상 8진수, 10진수, 16진수 중에 하나이다. 8진수인 경우에는 수의 앞에 0이 주어지고, 16진수인 경우에는 0x가 주어진다. X를 10진수로 바꿔서 출력하는

seeminglyjs.tistory.com

핵심: 문자열로 입력받아 index 1 번째가 x인지 아닌를 확인 (8진수(016)와 16진수(0x16) 분별)

Integer.valueOf(문자열 진수값, 문자열의 진수);

ex.

8진수라면 앞에 0 이후의 값을 분리하고(분리한값 N8에 저장) int result = Integer.valueOf(N8, 8); // 8진수 -> 10진수

16진수라면 앞에 0x 이후의 값을 분리하고(분리한값 N16에 저장) int result = Integer.valueOf(N16, 16);

                                                                                     // 16진수 -> 10진수 

 

[변환 메소드 정리]

Java Integer클래스로 쉽게 2진수,8진수,16진수 표현을 할수 있다.

메서드는 아래와 같습니다.

 2진수 변환 : Integer.toBinaryString(int);

 8진수 변환 : Integer.toOctalString(int);

16진수 변환 : Integer.toHexString(int);

 

각각의 값을 문자열로 반환 해줍니다.

 

꺼꾸로 문자열 2,8,16진수를 숫자로도 변환이 가능합니다.

사용 방법은 아래와 같습니다.

 2진수 변환 : Integer.valueOf(string, 2);

 8진수 변환 : Integer.valueOf(string, 8);

16진수 변환 : Integer.valueOf(string, 10);

 

(출처: forum.falinux.com/zbxe/index.php?document_srl=781790&mid=lecture_tip#:~:text=8%EC%A7%84%EC%88%98%20%EB%B3%80%ED%99%98%20%3A%20Integer.toOctalString,%EB%8F%84%20%EB%B3%80%ED%99%98%EC%9D%B4%20%EA%B0%80%EB%8A%A5%ED%95%A9%EB%8B%88%EB%8B%A4.)