Hayden's Archive

[자바/Java] 컴퓨터의 데이터 표현 방식 본문

Study/Java & Kotlin

[자바/Java] 컴퓨터의 데이터 표현 방식

_hayden 2020. 4. 12. 16:17

참고 도서 : Do it! 자바 프로그래밍 입문 ( https://book.naver.com/bookdb/book_detail.nhn?bid=13797129 )

 컴퓨터의 데이터 표현 방식 

- 우리가 사용하는 모든 데이터는 컴퓨터 내부에서 0과 1로 이루어져 있음

- 비트(bit) : 0과 1로 표현할 수 있는 최소 단위

- 1 바이트(byte) = 비트(bit) * 8

- 아스키(ASCII : American Standard Code for Infromation Interchange) : 미국 표준 학회(ANSI)가 제정한 규칙. 영문자, 숫자, 특수 문자를 8비트 값의 수로 미리 정해놓음. (ex : A는 숫자 65라는 값으로 표현하도록 약속함. 컴퓨터 내부에서 A는 2진수 1000001로 표현됨. -> 모든 문자는 컴퓨터가 이해할 수 있는 아스키 값이 미리 정해져 있다.)

- 자바 프로그램에서는 2진수, 8진수, 16진수 사용 가능. 8진수를 2진수로 표현하려면 3개의 비트가 필요하고(∵ 2^3=8) 16진수를 2진수로 표현하려면 4개의 비트가 필요함.(∵ 2^4=16) (8은 2진수에서 0 또는 1이 4개(1000) 있어야 하므로 3개의 비트가 더 필요함. 16은 2진수에서 0 또는 1이 5개(10000) 있어야 하므로 4개의 비트가 더 필요함.)

- 프로그램에서 2진수 - 0B, 8진수 - 0, 16진수 - 0X를 붙여서 사용. 소문자로 써도 됨. (ex: 10진수 10 -> 2진수 0B1010, 8진수 012, 16진수 0xA)

- 부호 비트(MSB = Most Significant Bit) : 맨 앞에 붙여서 부호를 나타내는데 0을 붙이면 양수, 1을 붙이면 음수가 됨.
ex) 8비트로 5라는 숫자를 표현하면 00000101 (맨 앞의 0은 양수를 나타내는 부호비트 / 위 표에 따르면 5는 0101 / 8비트이므로 1과 0이 8개 와야 함.)
ex) 하지만 -5는 10000101이 아니다! 5와 -5를 더하면 0이 되어야 하는데 00000101과 10000101은 더해도 0이 되지 않음.

- 보수(Complement) : 어떤 특정한 수 N이 있을 때 a에 대한 N의 보수는 N-a가 된다. a와 더해서 N이 되는 수가 a에 대한 N의 보수.
ex) 10진수에서 10의 보수는 더해서 10이 되는 수. 3에 대한 10의 보수는 7.
ex) 2진수에서 2의 보수는 더해서 2(10 일영)가 되는 수. 맨 왼쪽 한 비트가 1로 증가하고 나머지는 0이 됨.

- 그러므로 2진수에서 2의 보수(더해서 10(일영)이 되게 하는 수) = 음수!

설명을 읽고 내가 적용해본 그림