자신에게 친절할 것 :)

Web Developing/Java

[java] Scanner, 진법 추가

Tashapark 2024. 3. 17. 18:59
728x90

// 남궁 성의 자바의 정석 듣는 중//

 

 

 

=> js랑 다르게 확실히.. 하나씩 전부다 입력해 줘야 만 함..

console 창에 입력하려면 scanner가 필요하다로 생각하면 될 듯. 

 


++ 진법이 너무 헷갈려서. 

책을 다시 봤는데 (기초편 강의는 길게 설명 x)

안 익숙해서 그렇지. 손으로 몇 번 계산해보면 이해가 됨. 

 

2진수 8진수 10진수 16진수
0 0 0 0
1 1 1 1
10 2 2 2
11 3 3 3
100 4 4 4
101 5 5 5
110 6 6 6
111 7 7 7
1000 10 8 8
1001 11 9 9
1010 12 10 A
1011 13 11 B
1100 14 12 C
1101 15 13 D
1110 16 14 E
1111 17 15 F
10000 20 16 10

 

 

2진수를 8진수, 16진수로 변환 하는 것은. 

자릿수를 각각 3개, 4개로 끊어서 변환 해주면 됨. 

 

자바의 정석 3판

 

- 실수의 진법변환은 

정수 부분과 실수부분을 나눠서 각각 계산, 소수부분이 0이 될 때까지 10진 소수에 2를 곱함. 

계산 결과의 정수부분만 아래부터(작은 값부터) 순서대로 적고 앞에 0.을 붙여줌. 

 

 

- 음수의 2진 표현은 2의 보수법 활용

부호있는 정수의 경우에는 2가지 방법.

1. 2진수의 맨 왼쪽의 1bit(MSB, most significant bit)의 값을 1로 바꿔주면 다 음수가 됨. 

but, 두 수를 더했을 때 2진수 0이 안 되고, 0이 -0으로 2개 존재, 2진수 증가 시 10진 음수 감소 .

 

2. 2의 보수법으로 사용. 

자리 올림에 의해서 양수와 음수의 합이 0이 되도록 만들어줌(비트 단위수를 초과해서 사라지게 함)

then,  부호 신경 안쓰면서 덧셈 가능. 2진수 증가 시 10진 음수가 감소하지 않음. but, MSB만 바꾸는 것으로 부호 변경이 안되기에 간결성이 떨어짐. 

 

- 음수의 이진수는 절대값 -> 2진수 -> 2의 보수

 

- 2의 보수는 빼서도 구할 수 있지만, 1의 보수로 구하는 게 더 간단함

자바의 정석 3판

 

*음수의 2진 표현 구하는 방법

1) 음수의 절대값을 2진수로 변환

=> -5 --> 5 --> 0101

2) 2진수의 1을 0, 0을 1로 바꿈 (1의 보수 구하기)

=> 1010

3) 1 더하기 (2의 보수 구하기) 

=> 1011

728x90
반응형

'Web Developing > Java' 카테고리의 다른 글

[java] 연산자 operator, 형변환, 사칙 연산자  (3) 2024.03.18
[java] 오버플로우, 타입 간 변화  (0) 2024.03.17
[Java] printf()의 지시자  (0) 2024.03.15
[Java] 변수, 상수, 리터럴  (0) 2024.03.15
[Java] 단축키  (0) 2024.03.15