본문 바로가기

컴퓨터 과학

(4)
부동소수점에 오차가 발생하는 이유(feat. IEEE 754) 인트로최근 모딥다를 읽다가 흥미로운 내용을 발견했다.부동소수점 산술 연산은 정확한 결과를 기대하기 어렵다. 정수는 2진법으로 오차 없이 저장 가능하지만 부동소수점을 표현하기 위해 가장 널리 쓰이는 표준인 IEEE 754는 2진법으로 변환했을 때 무한 소수가 되어 미세한 오차가 발생할 수밖에 없는 구조적 한계가 있다. 이 구절을 읽고 부동 소수점에 대해 정확히 알아보고 싶은 생각이 들었다. 그리고 왜 2진법으로 변환했을 때 무한 소수가 되어버리는 건지 궁금했다. 그래서 이번 글에서는 관련 내용을 찾아보다가 알게된 내용을 정리해보고자 한다.10진법 소수를 2진법으로 변환하기우선 간단하게 10진법 소수를 2진법으로 바꿀 수 있는 방법은 무엇인지부터 알아보았다. 간단한 예로 0.1을 변환해보자.소수에 2를 곱하..
컴파일러(Compiler)와 인터프리터(Interpreter) C언어는 빠르고, python은 느리다?컴퓨터와 소통하기컴퓨터는 0과 1로 되어있는 정보만 이해할 수 있지만, 우리가 0과 1로 코딩하는 것은 너무 힘들다. 그렇다면 python과 같은 사람이 이해하기 쉬운 프로그래밍 언어로 코드를 작성하고 나중에 컴퓨터가 이해할 수 있는 0과 1로 바꾸는 것은 어떨까? 컴파일러(Compiler)와 인터프리터(Interpreter)가 바로 고수준의 언어로 작성된 소스 코드를 기계어로 번역해주는 역할을 하며, 이 두 가지 방식에는 차이점이 있다.기계어란?CPU가 직접 해석하고 실행할 수 있는 명령어로 CPU 아키텍쳐마다 다를 수 있다.컴파일러컴파일러는 소스 코드를 한 번에 기계어로 변환한 뒤 실행한다. 대표적인 컴파일 언어로 C, C++ 등이 있으며, 컴파일 과정은 언어별..
ASCII 유니코드 UTF-8? utf-8 인코딩을 안해서 문자가 깨진 적이 한 두 번이 아니었다... 제대로 이해하고 넘어가자컴퓨터에서 문자는 어떻게 나타내지? 컴퓨터는 0과 1을 통해 숫자를 나타낸다. 그렇다면 컴퓨터는 "a", "가"와 같은 문자는 어떻게 나타낼까?0과 1을 이용해선 숫자밖에 나타낼 수 없기 때문에 각 문자를 대응되는 숫자로 정리해두면, 사용자가 특정 문자를 입력했을 때 이를 컴퓨터가 이해할 수 있는 숫자로 변환할 수 있게 된다. 이처럼 사용자가 입력한 문자나 기호들을 컴퓨터가 이용할 수 있는 신호로 만드는 것을 인코딩이라고 한다.  ASCII1963년 미국에서는 위에서 설명한 것처럼 문자를 해석하기 위한  정보 교환용 표준 부호 체계를 만들었고, 이를 ASCII(American Standard Code for I..
2진법 10진법 16진법 대학교 1학년 때 배우고 까먹어버린 진법... 복습하기 위해 글로 정리하기로 했다.비트와 바이트디지털 세계는 2진법으로 정보를 나타내는 게 제일 효율적이다. 그래서 컴퓨터는 0과 1 두 개의 숫자만 사용해 수를 나타내는 2진법을 사용한다. 0 또는 1의 값을 가지는 디지털 데이터의 가장 작고 기본적인 단위를 비트(bit)라고 한다. 컴퓨터는 모든 데이터를 비트로 나타낸다. 하지만 비트 한 개로는 많은 양의 데이터를 나타낼 수 없기 때문에 여러 비트를 사용해 정보를 나타낸다. 일반적으로 8개의 비트를 묶어서 데이터를 처리하며, 8개의 비트가 모인 형태를 1 바이트(byte)라고 한다. 1 바이트는 28=256만큼의 데이터를 표현할 수 있다. 2진법과 10진법2진법으로 나타낸 숫자는 어떤 숫자를 어떻게 해석..