h-i-s-t-o-r-y

[Java] 진법 변환과 음수 표현 본문

Java

[Java] 진법 변환과 음수 표현

H' 2021. 7. 12. 20:16

▷ 진법 변환

10진수 : 0 1 2 3 4 5 6 7 8 9
2진수 : 0 1
8진수 : 0 1 2 3 4 5 6 7 (2진수를 3칸씩 자름)
16진수 : 0 1 2 3 4 5 6 7 8 9 A B C D E F (2진수를 4칸씩 자름)

> 해당 진법으로 출력

// flag # : 해당 진법의 표시형식으로 출력
int i = 10;
System.out.printf("%d\n", i);     //10
System.out.printf("%#o\n", i);   //012
System.out.printf("%#x\n", i);   //0xa

System.out.printf("%d\\n", x);  //10진수
System.out.printf("%o\\n", x);  //8진수
System.out.printf("%x\\n", x);  //16진수

> 해당 진법으로 저장

Integer 래퍼클래스. toBinaryString() 함수 - 10진수를 2진수 문자열(String)로 저장한다.

// 10 -> "1010" 출력형식이 %s임에 주의 !
System.out.printf("%s\n", Integer.toBinaryString(i));

Integer.toBinaryString(x)  //2진수
Integer.toOctalString(x)   //8진수
Integer.toHexString(x)     //16진수

▷ 음수 표현 방법

> 부호와 절대치

2진수로 나타낸 뒤, 최상위 비트로 부호를 나타낸다.

[1]000 1010 == -10  // [1]은 음수

[0]000 1010 == 10  // [0]은 양수

한계 ? 0은 [1], [0] 모두 0이다.

[1]000 0000, [0]000 0000 == |0|

 

> 1의 보수법

절대치를 2진수로 나타낸 뒤, 1의 보수를 취한다.

|-10| → 10  // 절대치

→ 0000 1010  // 2진수

→ 1111 0101  // 1의 보수

한계 ? 0은 0000, 1111 모두 0이다.

0000 0000, 1111 1111 == 0

 

> 2의 보수법

절대치를 2진수로 나타낸 뒤, 1의 보수를 취하고 +1 한다.

|-10| → 10  // 절대치

→ 0000 1010  // 2진수

→ 1111 0101  // 1의 보수

→ 1111 0110  // +1

0은 1 0000 0000이다.

 

 

Comments