Programming/JAVA

유니코드, 2의보수법, 부동소수점

최동훈1 2021. 7. 19. 17:08

우선 컴퓨터에 a 라는 문자를
char 형 데이터에 저장한다면, char a= 'a' 이렇게 char형 변수에 저장한다.  그런데 실제로 저장되는 값은 문자 a 에 매치되는 유니코드 값인 65이다. 컴퓨터는 0과 1로 이루어진 이진법 숫자만 저장 가능하기 때문이다.
unicode 는 원래 아스키코드, 확장 아스키 코드 처럼 전 세계의 문자 인코딩 방식을 하나로 통합해사 만들어진 체계인데 자바는 Unicode-16  을 쓴다. 이 16의 특징은 영어든 숫자든 한글이든 다 2byte 규격으로 저장한다는 것이다. 단점은 1바이트로 저장가능한 영어조차 2바이트로 저장하니 비효율적이다. 그런데 Unicode- 8 은 영어는 1byte, 한글은 3byte 이렇게 가변적으로 문자를 표현한다.

a와 b 가 n의보수관계에 있다는 것은 a와 b 를 합하면 n 이 된다는 뜻이다. 그런데 10진법으로 2는 2진법으로 '10' 이다. 또한 두개가 더해서 이진수로 '10' 이 된다는 뜻은 두수를 더했을때, 자리올림이 발생하고 0이되는 수를 뜻한다. 또한 컴퓨터에서 조금 더 쉽게 음수를 표현하기 위해 절댓값이 같고 부호가 다른 두 수를 더해서 2진법으로 비트를 읽을때, 0으로 만들도록 음수를 표현하였는데, 이것을 2의 보수법으로 표현한다.

실수의 표현법은 간단하게 M×2^e 로 표현되고 각각 s(sign bit),e(exponent bit), m(mantissa) 로 표현된다.