[Java] 정수, 실수 표현방식

정보구니·2021년 12월 20일
0

Java

목록 보기
6/39
post-thumbnail

정수 표현방법


정수를 표현하는 자료형은 바이트의 크기에 따라 4가지로 구분된다.

  • byte : 1바이트
  • short : 2바이트
  • int : 4바이트
  • long : 8바이트

따라서 정수 표현에 있어 몇 바이트로 정수를 표현할 것인가를 가장 먼저 결정해야 한다.

우선 1바이트를 기준으로 정수의 표현 방식을 알아보도록 하겠다.




양의 정수 표현 방식

위 그림은 정수 표현의 기본원리를 나타낸다.

가장 왼쪽에 위치한 비트는 부호를 나타내는데,
0이면 양수 1이면 음수를 의미한다.

이때 부호를 결정짓는 가장 왼쪽에 위치한 비트를 MSB (Most Significant Bit)라 함

나머지 일곱 비트는 데이터의 양적인 크기를 나타낸다.




음의 정수 표현 방식

음의 정수를 표현하기 위해서는 부호 비트만 1로 바꾸면 되지 않을까? 생각할 수 있다.

이 가정이 맞다면 00011001 + 10011001의 결과가 0이 되어야 한다.

하지만 실제 덧셈 결과는 10000010으로 0이 아님을 알 수 있다.

그렇다면 음의 정수는 어떻게 표현해야 할까?

음의 정수는 양의 정수의 이진수 표현에 2의 보수를 구해 표현한다.



2의 보수 구하기

2의 보수는 어떻게 구할까?

예제를 통해 알아보도록 하겠다.

다음은 1바이트로 표현된 양의 정수 +5에 대한 2의 보수를 구하는 과정이다.

2의 보수는 우선 1의 보수를 구한 뒤, 그 결과에 1을 더해줘 구할 수 있다.

1의 보수는 각 비트 별로 1은 0으로, 0은 1로 변경하여 구하고, 그 결과에 1을 더해주면 2의 보수가 된다.








실수 표현방법


실수는 무한대로 오차 없이 표현하는 것이 불가능하기 때문에 근사치로 표현하는 것이 최선이다.

따라서 정밀도를 낮추고 표현할 수 있는 값의 범위를 넓히기 위한 수식을 만들어 이 수식에 바이트 정보를 반영하여 실수를 표현한다.

실수에는 항상 오차가 있다는 것을 기억하고 넘어가자 !






참고
열혈 자바 chapter02

0개의 댓글