본문 바로가기

Doc/컴퓨터

컴퓨터 구조 Fixed Point. Floating Point

고정소수점과 부동소수점을 이해하기 위해서는

사람과 컴퓨터의 차이를 알아야한다.

 

 

사람은 숫자에 점을 찍으면 한 눈에 바로 소수점을 알아챌 수 있지만

컴퓨터는 그렇지 않다. 멍청하다. 무조건 이분법으로만 이해하는 바보이다.

 


263 => 100000111
0.3 => 0.01001100110011

 

 

테트리스를 쌓는다고 생각해보자.

사람은 263과 0.3이라는 크기를 십진법이라는 블록을 쌓아서 채운다.

컴퓨터는 263과 0.3이라는 크기를 이진법이라는 블록을 쌓아서 채운다.
테트리스에서 쌓는 벽의 높이를 근사치라고 가정한다면
2진법보다 10진법. 10진법보다 60진법으로 더 빨리 근사치의 값으로 채울 수 있을 것이다.

 

 

 

 


이렇게 이분법으로 이해하는 컴퓨터의 소수점은

부동소수점과 고정소수점으로 나뉜다.

 

 

0과 1만 쓰이는 단순한 표현방식에서 부동소수점과 고정소수점을 구별할까?

즉, 이분법밖에 쓸 줄 모르는 컴퓨터는 부동소수점과 고정소수점을 어떻게 구별할까?

 

 

이를 위해 바이어스 표현법이 등장했다.

바이어스(Bias)란 이진법을 변형시킨 숫자의 표현 방식이다.

부동소수점에서는 바이어스 표현법이 쓰이지만
고정소수점에서는 바이어스 표현법이 쓰이지 않는다.

 

 

고정소수점 : 0 0000000000000001 000000000000000
부동소수점 : 0 01111111 0000000000000000000000
(지수 = 0 + 127(Bias) = 127 (01111111) )
(지수 = 1은 10^0이므로 1의 지수는 0이다. 지수는 자릿수를 의미한다)

 


컴퓨터의 입장에서 생각해보자.
컴퓨터가 숫자를 고정소수점에서 부동소수점으로 변환하려고 한다.
그 변환하는 과정에 있어서
고정소수점에 없던 바이어스표현법을 작동시키면 된다.
그러면 부동소수점이란 비트를 작동시킬 수 있다.
(이진법. 십진법. 소수점을 모두 쓸 줄 아는 똑똑한 사람의 입장에서는 왜? 귀찮게 바이어스까지 또 다른 표현법을 만들어서 쓰지?라고 생각할 수 있다.)

 


이와 비슷한 맥락에 있는 또 다른 표현 방식이 있다.
논리회로 Gray Code
한 숫자에서 다음 숫자로 넘어갈때 한 비트만 바뀐다.
언뜻 보면 이진법 바이너리 코드와 비슷해보이지만 
Gray Code는 바이어스 표현법처럼

이진법을 변형시킨 숫자의 표현 방식이다.

 

 

 


그레이 코드 Gray Code? (Tistory Blog 나무 숲)

 

그레이 코드 Gray Code?

Gray code란? 자료를 표현하는 방식 중 하나. I/O장치, A/D 변환기, 주변장치 등에서 숫자를 표현할 때 사용한다. 수의 크기가 변할 때 인접한 수 사이에 한 자리만(1bit) 변하게 만들어진 코드이다. 1

woodforest.tistory.com

 

 

 

 

 

부동소수점 (0.1 + 0.1 === 0.2??) (Velog thms200)

 

부동소수점 (0.1 + 0.1 === 0.2??)

얼마전 퀴즈로 나왔던 부분을 정리한다. 컴퓨터에서 라 입력하면 일까? 일까? 정답은 이다. (실제로 inspection에서 입력하면 true로 나온다.ㅎㅎ) 컴퓨터에서 숫자를 표현하는 방법은? 은 으로 숫자

velog.io

 

 

 

 

 

부동소수점에 대한 이해 (Tistory Blog C언어 예술가)

 

부동소수점에 대한 이해

부동 소수점 표현은 아주 큰 수와 아주 작은 수를 효율적?으로 표현하기 위해서 사용한다. 여기서 효율적이란 표현은 정확하다는 표현은 아니다. 효율적일 수록 오차가 발생하기 마련이다. 우선

thrillfighter.tistory.com

'Doc > 컴퓨터' 카테고리의 다른 글

컴퓨터과학 CS50 2020 Lecture 1 : C  (0) 2022.05.13
컴퓨터과학 CS50 2020 Lecture 0 : Scratch  (0) 2022.04.29
Hardware. Software  (0) 2022.04.15
Linux OS. Cloud Shell. CLI(Command Line Interface)  (0) 2022.04.15









>