computer science
[CS] 이진수로 소수를 나타내는 법
십진수에 작은 값을 표현하는 소수 표현이 있듯이, 이진수에도 소수 표현이 존재합니다. 이 글에선 어떻게 이진수로 소수를 나타내는지 알아봅시다. 십진수를 이진수로 만들 때 정수 부분은 나눗셈을 통해 구했듯이, 소수 부분은 곱셈을 통해 구합니다. 이진수 소수 읽기 이진수 소수를 쓰기 전에 이진수 소수를 읽는 법부터 알아야겠죠? 기존에 알고 계시던 이진수 읽는 법과 다르지 않습니다! 각 자릿수 간엔 두 배 차이가 난다는 사실을 그대로 가지고 가면 됩니다. 1010.0101(2) = 23* 1 + 22 * 0 + 21 * 1 + 20 * 0 + 2-1 * 0 + 2-2 * 1 + 2-3 * 0 + 2-4 * 1 = 23 * 1 + 21 * 1 + 2-2 * 1 + 2-4 * 1 = 8 + 2 + 0.25 + 0..
[CS] 덧셈밖에 못하는 컴퓨터가 어떻게 2의 보수를 이용해 뺄셈을 할까요?
우리는 컴퓨터로 사칙연산과 복잡한 미적분까지 계산하지만, 근본적으로 컴퓨터는 덧셈밖에 하지 못 합니다. 멀리까지 가진 말고, 덧셈밖에 못하는 컴퓨터는 어떻게 뺄셈을 하는지 알아봅시다. 컴퓨터는 2의 보수를 이용하여 음수를 구현합니다. 뺄셈은 음수를 더하는 것 128 - 72는 128 + (-72)로 생각할 수 있죠? 음수의 표현 방법만 어떻게 만들어 낸다면, 뺄셈은 따로 구현할 필요가 없습니다! 컴퓨터는 이미 덧셈을 할 줄 아니까요! 그렇다면 어떻게 음수를 표현할 수 있을까요? 수의 범위가 정해져 있다면, 그 범위의 정가운데를 0으로 잡고 그보다 작은 건 음수로 취급하면 될까요? 예를 들어 0~256의 범위가 있을 때에 범위의 정가운데가 128이니, -128만큼 편향해서 0 → -128, 128 → 0,..
[CS] 비트와 바이트의 차이, 그리고 KB/MB/GB/TB
프로그램을 다운로드하고 업데이트하면서, 인터넷을 사용하면서, 혹은 프로그램의 용량을 확인하면서 비트와 바이트, KB/MB/GB/TB를 아주 많이 보셨을 겁니다. 그들은 무엇이고 어떤 차이가 있을까요? 비트는 컴퓨터가 정보를 저장하는 단위입니다. 정보의 저장 단위 1 바이트(Byte)는 8 비트(Bit)입니다. 바이트 단위끼리는, 접두어가 한 단계 올라갈 때마다 크기가 1000배가 된다고 생각하시면 됩니다. 네트워크 전송 속도에서 보이는 KB, MB, 게임과 영화의 용량으로 자주 보는 GB, 하드디스크의 용량으로 자주 보는 TB 정도를 제외하면 생소할 수도 있겠네요. 접두어(SI) 이름 계산법 비트(Bit) 바이트(Byte) 1 Byte = 8 Bit 킬로(103) 킬로바이트(KiloByte, KB) 1 ..
[CS] 이진법과 십진법 사이 변환하기, 컴퓨터와 이진법
숫자를 0과 1로만 나타내는 것이 이진법입니다. 진법 이해하기 십진법 숫자 1234를 봅시다. 자릿수별로 떼어서 보면, 1000 * 1 + 100 * 2 + 10 * 3 + 10 * 4이죠? 이는 곧 103 * 1 + 102 * 2 + 101 * 3 + 100 * 4와 같습니다. 자릿수간에 10배 차이가 나죠. n개의 자릿수 차이가 나면 10n배 차이가 나게 됩니다. a진법을 구성하는 방법이 이런 겁니다. 각 자릿수의 수를 c0, c1, c2, ⋯ 라 하면 a진법 수는 a0 * c0 + a1 * c1 + a2 * c2 + a3 * c3 + ⋯ + an * cn와 같이 표현됩니다. 자릿수간엔 a배 차이가 나죠. n개의 자릿수 차이가 나면 an배 차이가 나게 됩니다. 기호들이 많아서 눈에 안 들어오실 수도 ..