-
(Do it 자바) 2 - 변수와 자료형 (1)개발/Java 2023. 5. 31. 23:04
■ 컴퓨터에서 수 표현 방법
컴퓨터는 0과 1로 데이터 저장 (on/off)
이런 0과 1로 자료를 표현한 것이 2진수라 한다.
1byte = 8bit
* 2진수
0000 0001 0010 0011 0100
0 1 2 3 4
* 8진수
0 1 2 3 4 5 6 7 10
8
1 1 1 = 7
* 10진수
1 2 3 4 5 6 7 8 9 10
* 16진수
9 A B C D E F 10
9 10 11 12 13 14 15 16
16진수를 사용하는 이유는 다음과 같다.
8bit로 10을 표현한다면
10 = 8 + 2 (2에 엔승으로 표현되는 것으로 더하기)
10 = 2³ + 2¹ 인데
2진수로 10을 나타내면 아래와 같다.
0 0 0 0 1 0 1 0
2³2²2¹2
16진수는 0~15까지 표현하려면
1 1 1 1 총 4bit 필요
2³2²2¹2
8+4+2+1
= 15 이다.
즉 0~15까지 표현하려면 총 4bit가 필요한데,
이 4bit를 한꺼번에 모아서 표현할 수 있는게
16진수의 F 이다.
주소값 나타낼 때 주로 16진수로 많이 표현한다.
만약 64bit 다 하면
64/4= 16개면 표현 가능
32/4= 8개면 표현 가능
하기 때문에 편리성으로 쓴다.
■ 프로그래밍으로 나타내보기 (2진수, 8진수, 16진수)
int(인티져) : 정수를 나타내는 자료형
num = (사진에서) 변수로 정해짐
프로그래밍에서 "=" 는 대입의 의미이고, 같다는 의미와 다르다
※ 같다는 "=="로 표현
숫자 앞 0B = 2진수를 의미
EX) 0B1010 = 10
숫자 앞 0 = 8진수를 의미
EX) 012 = 10
숫자 앞 0X = 16진수를 의미
EX) 0XA = 10
"//" 는 주석으로 컴파일 시 오류를 일으키지 않는다.
■ 단축키 참고
클래스 생성 Ctrl + N
컴파일 Ctrl + S
실행 Ctrl + F11
■ 음의 정수 표현하기
가장 많이 쓰는 정수의 bit 는 int로 32bit = 4byte
맨 앞을 MSB라고 하며 부호 비트를 나타낸다.
앞이 0이면 양수를 의미, 1이면 음수를 의미한다.
5를 이진수로 표현하면 아래와 같다
0 0 0 0 0 0 1 0 1 = 5
그렇다면 아래의 숫자가 -5라 생각할 수 있는데 아니다.
1 0 0 0 0 0 1 0 1 = -5(?)
왜냐면 5와 -5의 합은 0이 나와야 하는데 해당 숫자를 더하면
0 0 0 0 0 0 1 0 1
1 0 0 0 0 0 1 0 1
-----------------------------
1 0 0 0 0 1 0 1 0 -> 모든 숫자가 0이 아니므로 -5라 할 수 없다.
즉 프로그래밍에서 -5와 5를 더했을 때 0이 되는 값을 찾아야 하는데
이를 "2의 보수" 라 한다.
보수란 보충되는 수라 불리며 예를 들면
10에 대한 4의 보수는 6이다.
4 + 6 = 10
10에 대한 5의 보수는 5이다.
5 + 5 = 10
즉 2진수에서 2의 보수는 더해서 2, 즉 10이 되는 수이다.
따라서 합해서 0이 되고 bit가 넘어가서 트렁케이트 즉 비트가 짤리는 현상 발생하도록 해야한다.
4비트라는 가정하에 아래를 더하면
0 0 1 1
1 1 0 1 (2의 보수)
--------------
1 0 0 0 0 (1이 짤려서 트렁케이트)
2의 보수를 더해 0000이 되었고, 즉 0이 되었다.
0011에 대한 2의 보수를 구해 더했더니 0이 되었으므로
2진수에서 2의 보수를 음수라고 한다.
2의 보수를 구하기 위해서는 1. 우선 1의 보수를 만들어야 한다.
1의 보수를 구하는 방법은 다 더해서 1이 나오도록 만들어야 한다.
즉 0이면 1, 1이면 0을 넣어준다.
앞서 실습했던 5를 예시로 보자면,
0 0 0 0 0 0 1 0 1
1 1 1 1 1 1 0 1 0 (1의 보수)
-----------------------------
1 1 1 1 1 1 1 1 1
여기서 2. 맨 마지막 자리수에 1을 더하면
1 1 1 1 1 1 1 1 1
0 0 0 0 0 0 0 0 1
-----------------------------
1 0 0 0 0 0 0 0 0 0 (1 트렁케이트)
따라서 2의 보수(음수)를 구하는 방법은 1의 보수를 구해서 더한 후
그 값에 1을 더하면 된다.
즉 5에 대한 2의 보수는 1 1 1 1 1 1 0 1 0 의 제일 낮은 자리에 1을 더한
1 1 1 1 1 1 0 1 1 이며 이 2진수의 값이 바로 10진수 -5이다.
0 0 0 0 0 0 1 0 1 = 5
1 1 1 1 1 1 0 1 1 = 5에 대한 2의 보수 = -5
-----------------------------
1 0 0 0 0 0 0 0 0 0
☞ 결론
음수를 만드는 방법은 2의 보수를 취해야 하며,
2의 보수를 취하기 위해서는 1의 보수를 취하고,
제일 낮은 자리에 1을 더하는 것이다.
-5가 맞는지를 확인하는 방법은 다시 거꾸로 돌아가면 된다.
2의 보수로 돌아가서 해당 숫자가 5인지 확인하면 된다.
■ 양수와 음수 더하기 실습
'개발 > Java' 카테고리의 다른 글
(김영한의 자바 기본) 6 - static (1) 2024.10.23 (김영한의 자바 기본) 5 - 자바 메모리 구조 (메서드, stack, heap) (1) 2024.10.23 (김영한의 자바 기본) 4 - 접근 제어자 (private, default, protected, public) (0) 2024.10.23 (김영한의 자바 입문) 3 - 내용 정리 (0) 2024.05.28 (Do it 자바) 1 - 자바 프로그래밍 시작하기 (2) 2023.05.25