0과 1로 숫자를 표현하는 방법
- 컴퓨터는 0과 1로 모든 정보를 표현하고, 0고 1로 표현된 정보만을 이해할 수 있습니다.
하지만 컴퓨터는 3 + 4의 계산 결과를 7이라는 답변을 낼 수 있습니다.
과연 어떻게 7이라는 답변을 낼 수 있을 지 살펴보겠습니다.
정보 단위
컴퓨터가 이해하는 가장 적은 정보 단위는 비트(bit) 입니다.
쉽게 생각하여 비트는 전구로 빗대어 이해 할 수 있습니다.
1비트는 한개의 전구에 대하여 켜짐(1), 전구 꺼짐(0) 으로 총 두 가지의 상태를 표현 할 수 있습니다.
2비트는 두개의 전구에 대하여 (꺼짐,꺼짐), (꺼짐, 켜짐), (켜짐, 꺼짐), (켜짐, 켜짐) 총 네 가지의 상태를 표현 할 수 있습니다.
3비트는 세 개의 전구에 대하여 총 여덟 가지의 상태를 표현 할 수 있습니다.
1비트 = 2의 1승
2비트 = 2의 2승, …..
우리가 실행 하는 웹 브라우저, 워드 프로세서, 포토샵 등의 프로그램은 수십만, 수백만 개 이상의 0과 1로 이루어져 있습니다. 하지만 일상적으로 프로그램의 크기를 말할 때 “이 파일은 8,920,120 비트” 라고 표현하지는 않습니다.
프로그램와 같이 큰 크기의 비트를 나타낼 때는 비트 보다 큰 단위를 사용합니다.
바이트, 킬로바이트, 메가바이트, 기가바이트, 테라바이트와 같은 단위를 사용
바이트(byte)는 8개의 비트를 묶은 단위이고 비트보다 한 단계 큰 단위입니다.
1byte가 표현할 수 있는 정보는 8비트와 같으니 282^8(2의 8승) 256개의 정보를 표현 할 수 있습니다.
바이트를 제외한 kb, mb, gb, 그 이상의 단위들은 모두 이전 단위를 1000개 묶어 표현한 단위라는 점 유의!
💡 워드(word) :
CPU가 한 번에 처리할 수 있는 데이터 크기를 의미합니다. 만약 CPU가 한 번에 16비트를 처리할 수 있다면 1워드는 16비트가 되고, 한 번에 32비트를 처리할 수 있다면 1워드는 32비트가 되는 것이다.
대체적으로 현대 CPU는 32비트와 64비트의 CPU로 나누어진다.
32비트 CPU = 32비트 워드 CPU, 64비트 CPU = 64비트 워드 CPU
64bit = 8바이트
32bit = 4바이
이진법
수학에서 0과 1만으로 모든 숫자를 표현하는 방법을 이진법(binary) 라고 합니다.
우리가 보통 숫자를 사용할 때는 십진법(decimal)을 사용합니다.
십진법 : 숫자를 셀 때 9를 넘어가는 시점에 자리 올림을 하여 0부터 9까지 , 열 개의 숫자만으로 모든 수를 표현하는 방법
이와 유사하게 이진법은 아래와 같이 숫자가 1을 넘어가는 시점에 자리 올림을 하여 0과 1, 두 개의 숫자만으로 모든 수를 표현합니다.
이진법으로 표현한 수를 이진수, 십진법으로 표현한 수를 십진수라고 합니다.
우리는 일상적으로 십진수를 사용하지만, 컴퓨터에 어떤 숫자를 알려 주려면 십진수가 아닌 이진수로 알려 주어야 합니다.
하지만 컴퓨터와 우리가 숫자만을 보고 십진수인지 이진수인지를 판별을 할 수가 없다.
1000 이라는 숫자가 있으면 십진수로는 1000 이지만 이진수로는 8이다.
이진수 표기 방식
이런 혼동을 예방하기 위해 위의 그림대로 따로 이진수라고 표기를 하여준다.
전자는 이진수를 수학적으로 표기할 때, 후자는 코드 상에서 이진수를 표기할 때 사용
이진수의 음수 표현
십진수에서 음수를 표현할 땐 단순히 숫자 앞에 마이너스 부호를 붙이면 그만입니다. -1, -3, -5
이진수에서는 컴퓨터는 0과 1만 이해할 수 있기 때문에 마이너스 부호를 사용하지 않고 0과 1만으로 음수를 표현해야 합니다.
0과 1만으로 음수를 표현하는 방법 중 가장 널리 사용되는 방법은 2의 보수(two’s complement)를 구해 이 값을 음수로 간주하는 방법
2의 보수의 사전적 의미는 ‘어떤 수를 그보다 큰 2^n에서 뺀 값’을 의미합니다.
예를 들어 0b11 의 2의 보수는 0b11 보다 큰 2^n, 즉 0b100 에서 0b11을 뺀 0b01이 되는 것
쉽게 설명 하자면 모든 0과 1을 뒤집고, 거기에 1을 더한 값
0b11의 모든 0과 1을 뒤집으면 0b00 이고. 거기에 1을 더한 값이니 0b01이 되는 것
0b1011 을 2의 보수로 표현하면
0과 1뒤집기 → 0b0100 → 1을 더하기 → 0b0101
2의 보수로 표현한 값을 원래 값으로 복귀 : 2의 보수를 한 번 더 실행
0b0101 → 0과 1 뒤집기 → 0b1010 → 1 더하기 → 0b1011
실제로 이진수만 봐서는 음수인지 양수인지 구분을 하기 어렵습니다. 그래서 컴퓨터 내부에서 어떤 수를 다룰 때는 이 수가 양수인지 음수인지를 구분하기 위해 플래그(flag)를 사용합니다
16진법
이진법을 이용해 0과 1만으로 모든 숫자를 표현할 수 있었지만, 0과 1만으로 모든 숫자를 표현하다 보니 이진수의 길이가 너무 길어진다는 단점이 있었습니다.
그래서 데이터를 표현할 때 이진법 이외에 16진법도 자주 사용합니다.
16진법(hexadeciaml)은 수가 15를 넘어가는 시점에 자리 올림을 하는 숫자 표현 방식
그리고 10~15 까지는 각 각 A, B, C, D, E, F 로 표기합니다.
이진수에 비해 더 적은 자릿수로 더 많은 정보를 표현가능
16진법 표기 방식
16진법을 사용하는 주된 이유중 하나는 이진수 → 16진수, 16진수 → 이진수 로 변환이 쉽기 때문에
16진수를 이진수로 변환하기
16진수의 한 자리수는 4비트의 이진수로 간주하는 것
0x1A2B가 있을 때 각 각의 자리 수에 대한 수를 2진수로 변환하고 순서대로 합쳐주면 해당 16진수의 값에 대한 이진수화가 됨.
1 = 0b0001
A = 0b1010
2 = 0b0010
B = 0b1011
1+A+2+B = 0001101000101011
0x1A2B == 0b0001101000101011
이진수를 16진수로 변환하기
이진수를 16진수로 변환할 때는 이진수 숫자를 네 개씩 끊고, 끊어 준 네 개의 숫자를 하나의 16진수로 변환한 뒤 그대로 이어 붙이면 됩니다.
예를 들어 ‘0b100100101010’ 이라는 이진수가 있으면 총 12자리를 4자리 씩 끊으면 ‘1001’, ‘0010’, ‘1010’ 이 세 가지로 나오는데 2진수를 10진수로 변환을 하자면 각 각 ‘9’, ‘2’, ‘10’ 이 나온다 이거를 16진수화 하여서 순서대로 붙이면 16진수로 변환이 된다.
‘9’ = 9
‘2’ = 2
‘10’ = A
0b100100101010 == 0x92A
핵심 포인트
- 비트는 0과 1로 표현할 수 있는 가장 작은 정보 단위입니다.
- 바이트, 킬로바이트, 메가바이트, 기가바이트, 테라바이트는 비트보다 더 큰 정보 단위입니다.
- 이진법은 1을 넘어가는 시점에 자리 올림을 하여 0과 1만으로 수를 표현하는 방법입니다.
- 이진법에서 음수는 2의 보수로 표현할 수 있습니다.
- 16진법은 15를 넘어가는 시점에 자리 올림하여 수를 표현하는 방법입니다.
Quiz!
답
2GB
답
4번. 1byte는 8bit임
답
1101 → 모든 0과 1 뒤집기 → 0010 → 1 더하기 → 0011
답 : 001120011_2
답
D = 13 , A = 10
13 → 2진수 → 1101
10 → 2진수 → 1010
1101 + 1010 =
답
2번
0과 1로 숫자를 표현하는 방법
- 컴퓨터는 0과 1로 모든 정보를 표현하고, 0고 1로 표현된 정보만을 이해할 수 있습니다.
하지만 컴퓨터는 3 + 4의 계산 결과를 7이라는 답변을 낼 수 있습니다.
과연 어떻게 7이라는 답변을 낼 수 있을 지 살펴보겠습니다.
정보 단위
컴퓨터가 이해하는 가장 적은 정보 단위는 비트(bit) 입니다.
쉽게 생각하여 비트는 전구로 빗대어 이해 할 수 있습니다.
1비트는 한개의 전구에 대하여 켜짐(1), 전구 꺼짐(0) 으로 총 두 가지의 상태를 표현 할 수 있습니다.
2비트는 두개의 전구에 대하여 (꺼짐,꺼짐), (꺼짐, 켜짐), (켜짐, 꺼짐), (켜짐, 켜짐) 총 네 가지의 상태를 표현 할 수 있습니다.
3비트는 세 개의 전구에 대하여 총 여덟 가지의 상태를 표현 할 수 있습니다.
1비트 = 2의 1승
2비트 = 2의 2승, …..
우리가 실행 하는 웹 브라우저, 워드 프로세서, 포토샵 등의 프로그램은 수십만, 수백만 개 이상의 0과 1로 이루어져 있습니다. 하지만 일상적으로 프로그램의 크기를 말할 때 “이 파일은 8,920,120 비트” 라고 표현하지는 않습니다.
프로그램와 같이 큰 크기의 비트를 나타낼 때는 비트 보다 큰 단위를 사용합니다.
바이트, 킬로바이트, 메가바이트, 기가바이트, 테라바이트와 같은 단위를 사용
바이트(byte)는 8개의 비트를 묶은 단위이고 비트보다 한 단계 큰 단위입니다.
1byte가 표현할 수 있는 정보는 8비트와 같으니 282^8(2의 8승) 256개의 정보를 표현 할 수 있습니다.
바이트를 제외한 kb, mb, gb, 그 이상의 단위들은 모두 이전 단위를 1000개 묶어 표현한 단위라는 점 유의!
💡 워드(word) :
CPU가 한 번에 처리할 수 있는 데이터 크기를 의미합니다. 만약 CPU가 한 번에 16비트를 처리할 수 있다면 1워드는 16비트가 되고, 한 번에 32비트를 처리할 수 있다면 1워드는 32비트가 되는 것이다.
대체적으로 현대 CPU는 32비트와 64비트의 CPU로 나누어진다.
32비트 CPU = 32비트 워드 CPU, 64비트 CPU = 64비트 워드 CPU
64bit = 8바이트
32bit = 4바이
이진법
수학에서 0과 1만으로 모든 숫자를 표현하는 방법을 이진법(binary) 라고 합니다.
우리가 보통 숫자를 사용할 때는 십진법(decimal)을 사용합니다.
십진법 : 숫자를 셀 때 9를 넘어가는 시점에 자리 올림을 하여 0부터 9까지 , 열 개의 숫자만으로 모든 수를 표현하는 방법
이와 유사하게 이진법은 아래와 같이 숫자가 1을 넘어가는 시점에 자리 올림을 하여 0과 1, 두 개의 숫자만으로 모든 수를 표현합니다.
이진법으로 표현한 수를 이진수, 십진법으로 표현한 수를 십진수라고 합니다.
우리는 일상적으로 십진수를 사용하지만, 컴퓨터에 어떤 숫자를 알려 주려면 십진수가 아닌 이진수로 알려 주어야 합니다.
하지만 컴퓨터와 우리가 숫자만을 보고 십진수인지 이진수인지를 판별을 할 수가 없다.
1000 이라는 숫자가 있으면 십진수로는 1000 이지만 이진수로는 8이다.
이진수 표기 방식
이런 혼동을 예방하기 위해 위의 그림대로 따로 이진수라고 표기를 하여준다.
전자는 이진수를 수학적으로 표기할 때, 후자는 코드 상에서 이진수를 표기할 때 사용
이진수의 음수 표현
십진수에서 음수를 표현할 땐 단순히 숫자 앞에 마이너스 부호를 붙이면 그만입니다. -1, -3, -5
이진수에서는 컴퓨터는 0과 1만 이해할 수 있기 때문에 마이너스 부호를 사용하지 않고 0과 1만으로 음수를 표현해야 합니다.
0과 1만으로 음수를 표현하는 방법 중 가장 널리 사용되는 방법은 2의 보수(two’s complement)를 구해 이 값을 음수로 간주하는 방법
2의 보수의 사전적 의미는 ‘어떤 수를 그보다 큰 2^n에서 뺀 값’을 의미합니다.
예를 들어 0b11 의 2의 보수는 0b11 보다 큰 2^n, 즉 0b100 에서 0b11을 뺀 0b01이 되는 것
쉽게 설명 하자면 모든 0과 1을 뒤집고, 거기에 1을 더한 값
0b11의 모든 0과 1을 뒤집으면 0b00 이고. 거기에 1을 더한 값이니 0b01이 되는 것
0b1011 을 2의 보수로 표현하면
0과 1뒤집기 → 0b0100 → 1을 더하기 → 0b0101
2의 보수로 표현한 값을 원래 값으로 복귀 : 2의 보수를 한 번 더 실행
0b0101 → 0과 1 뒤집기 → 0b1010 → 1 더하기 → 0b1011
실제로 이진수만 봐서는 음수인지 양수인지 구분을 하기 어렵습니다. 그래서 컴퓨터 내부에서 어떤 수를 다룰 때는 이 수가 양수인지 음수인지를 구분하기 위해 플래그(flag)를 사용합니다
16진법
이진법을 이용해 0과 1만으로 모든 숫자를 표현할 수 있었지만, 0과 1만으로 모든 숫자를 표현하다 보니 이진수의 길이가 너무 길어진다는 단점이 있었습니다.
그래서 데이터를 표현할 때 이진법 이외에 16진법도 자주 사용합니다.
16진법(hexadeciaml)은 수가 15를 넘어가는 시점에 자리 올림을 하는 숫자 표현 방식
그리고 10~15 까지는 각 각 A, B, C, D, E, F 로 표기합니다.
이진수에 비해 더 적은 자릿수로 더 많은 정보를 표현가능
16진법 표기 방식
16진법을 사용하는 주된 이유중 하나는 이진수 → 16진수, 16진수 → 이진수 로 변환이 쉽기 때문에
16진수를 이진수로 변환하기
16진수의 한 자리수는 4비트의 이진수로 간주하는 것
0x1A2B가 있을 때 각 각의 자리 수에 대한 수를 2진수로 변환하고 순서대로 합쳐주면 해당 16진수의 값에 대한 이진수화가 됨.
1 = 0b0001
A = 0b1010
2 = 0b0010
B = 0b1011
1+A+2+B = 0001101000101011
0x1A2B == 0b0001101000101011
이진수를 16진수로 변환하기
이진수를 16진수로 변환할 때는 이진수 숫자를 네 개씩 끊고, 끊어 준 네 개의 숫자를 하나의 16진수로 변환한 뒤 그대로 이어 붙이면 됩니다.
예를 들어 ‘0b100100101010’ 이라는 이진수가 있으면 총 12자리를 4자리 씩 끊으면 ‘1001’, ‘0010’, ‘1010’ 이 세 가지로 나오는데 2진수를 10진수로 변환을 하자면 각 각 ‘9’, ‘2’, ‘10’ 이 나온다 이거를 16진수화 하여서 순서대로 붙이면 16진수로 변환이 된다.
‘9’ = 9
‘2’ = 2
‘10’ = A
0b100100101010 == 0x92A
핵심 포인트
- 비트는 0과 1로 표현할 수 있는 가장 작은 정보 단위입니다.
- 바이트, 킬로바이트, 메가바이트, 기가바이트, 테라바이트는 비트보다 더 큰 정보 단위입니다.
- 이진법은 1을 넘어가는 시점에 자리 올림을 하여 0과 1만으로 수를 표현하는 방법입니다.
- 이진법에서 음수는 2의 보수로 표현할 수 있습니다.
- 16진법은 15를 넘어가는 시점에 자리 올림하여 수를 표현하는 방법입니다.
Quiz!
답
2GB
답
4번. 1byte는 8bit임
답
1101 → 모든 0과 1 뒤집기 → 0010 → 1 더하기 → 0011
답 : 001120011_2
답
D = 13 , A = 10
13 → 2진수 → 1101
10 → 2진수 → 1010
1101 + 1010 =
답
2번