반응형
프로그래머가 이해해야하는 것
- 프로그래머로써 반드시 알아야 하는 것 중 숫자를 표현하는 것과 이를 컴퓨터가 어떻게 인식하는 지를 알아보고자 함.
여러가지 진수 이해하기
- 프로그램을 공부하다 보면 십진수, 이진수, 십육진수 등이 나옴.
십진수? 이진수? 십육진수?
- 우선 이것을 이해하기 전에 언제인지 모르겠지만 이진법(2진법), 팔진법(8진법), 십진법(10진법)에 대해서 들어도 보고 공부해본 기억이 있을 것이다. 수학시간인가 산수 시간에 배운걸로 기억이 남...
- 여기에서 진법은...진법은 수량을 나타낼 때 몇 개를 한 묶음으로 하여 수를 나타내느냐 하는 방식을 일컫는다(출처 및 자세한 설명은 다음 링크 참조 : 다음백과 http://100.daum.net/encyclopedia/view/24XXXXX44877)
- 이진법과 이진수를 다른 것이 아니고 같은것...그냥 수학에서는 이진법, 공학에서는 이진수로 사용하는 것 같은 느낌적인 느낌...(개인적인 생각)
십진수(10진수)
- 0~9까지 표시하는 것으로 우리가 흔히 쓰는것.
- 한자리를 이루는 것이 숫자 10개임.
- 영어로 decimal number
이진수(2진수)
- 0~1로 표시하는 것으로 주로 컴퓨터나 공학 분야에서 사용.
- 한자리를 이루는 것이 숫자 2개임
- 영어로 binary number
십육진수(16진수)
- 0~F로 표시하는 것으로 주로 컴퓨터나 공학 분야에서 사용
- 한자리를 이루는 것이 16개 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, a, b, c, d, e, f
- 영어로 hexadecimal number
그외
- 숫자를 몇개를 쓰느냐에 따라서 몇 진수가 되는것.
- 실생활에서는 연필 1다스(12개) 같은 거나 고기 1근(600g) 같은 거라고 생각하면 된다.
여러가지 진수 계산 및 변환
- 같이 이해해보기 위해 동일한 수식을 사용하여 계산 방법을 표현
- 8 + 8
- 15 - 7
십진수 계산
8 + 8 = 16
- 8 과 8을 더할 때, 앞 수인 8 의 다음 수부터 8번을 세야한다.
- 2번째를 셀 때, 9 다음 수가 없기 때문에 십의 자리에 1을 쓰고 다시 0부터 시작.
- 그래서 8번째 숫자가 6이므로 16으로 표기.
15 - 7 = 8
- 15에서 7을 뺄 때, 15의 이전 수 부터 센다.
- 6번째에서는 이전 수가 없으므로 십의 자리 숫자인 1을 빼고 9를 센다.
- 그래서 7번째 숫자인 8이므로 8이 되는 것.
이진수 계산
기본 수식은 십진수로 나타낸 것으므로 이것을 이진수로 바꿔야 한다.
- 8 + 8 -> 1000 + 1000
- 15 - 7 -> 1111 - 111
1000 + 1000 = 10000
- 0부터 8까지를 이진수로 표현하면
- 0, 1, 10, 11, 100, 101, 110, 111, 1000 이다.
- 여기서 1000 + 1000은 2000 이지만, 이진수 이므로 10000 이 된다.
1111 - 111 = 1000
- 십진수 15는 이진수로 표현하면 1111 이다.
- 십진수 7은 이진수로 표현하면 111 이다.
- 따라서 1111 - 111 = 1000 이다.
십진수를 이진수로 바꾸는 방법
이진수를 십진수로 바꾸는 방법
십육진수 계산
기본 수식은 십진수로 나타낸 것으므로 이것을 십육진수로 바꿔야 한다.
- 8 + 8 -> 8 + 8
- 15 - 7 -> f - 7
8 + 8 = 10
- 십육진수는 10부터 15까지 를 a, b, c, d, e, f 로 표기한다.
- 따라서, 9 부터 8번 숫자를 센다.
- 7번째 숫자인 f 다음은 0이므로 이때 앞에 1을 붙인다.
- 따라서 8+8은 10이다.
f - 7 = 8
- 십진수 15는 십육진수 f 다.
- f 이전 수인 e부터 7번째 숫자는 8이다.
- 따라서 f-7 = 8 이다.
십진수를 십육진수로 바꾸는 방법
십육진수를 십진수로 바꾸는 방법.
bit와 Byte 이해하기
- 컴퓨터나 전자, 혹은 정보통신 분야에서 사용하는 bit와 byte를 이해
bit (비트)
- 컴퓨터는 기본적으로 On/Off만 인식한다.
- 이 단위를 bit 라고 한다.
- Off 는 0, On은 1 이라고 하면, 이 bit는 이진수의 수 표현과 같다.
Byte(바이트)
- 1 Byte는 여러개의 bit로 이루어진 것.
- 최근 들어서 1 Byte = 8 bit 라는 개념이 정립. (최근이라함은 몇년 전이라고 지정하기 어려움... 개인적으로 이 것을 들은것은 약 20년 전... 그러니까 그 이전의 언제인가 부터 정립된것으로 예상..)
- 원래 6, 7, 8, 9, 12 bit 가 1 Byte 였으나 컴퓨터의 용량과 처리속도가 빨라지면서 8 bit로 정리된 것으로 예상.
- 컴퓨터 부품중 RAM과 하드디스크, SSD의 용량을 표시할 때 이 Byte를 사용한다.
- 검색을 하다보면 byte와 Byte를 혼용하는 경우가 많은데 Byte가 맞다. 이것은 bit를 줄여서 b로 표기하는데 이것과 혼돈을 없애기 위해서 B로 사용을 하므로, Byte가 맞는 표현이다.
- 통신에서 사용하는 20 Mbps 에서 bps는 bit per sencond다. 결론적으로 20 Mbps면 실제로 우리가 생각하는 20 MB의 파일을 1초에 받을 수 있는 속도가 아니고, 20 MB의 파일은 8초가 걸리는 속도다.
프로그램에서의 표기
정수형 변수에 초기화를 할 경우 이진수 혹은 십육진수로 값을 넣을 수 있고, 아래와 같이 표기한다.
- int intBit = 0b1111; // 십진수 15의 이진수 표현
- int intByte = 0x11; // 십진수 17의 십육진수 표현
이진수는 0b 로 시작하여 0과 1로 표기
십진수는 0x 로 시작하여 0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f 로 표기, 이때 a, b, c, d, e, f는 대문자 혼용가능.
이진수와 십육진수의 상관관계
이진수와 십육진수는 상당히 밀접한 관계가 있다.
임의의 이진수가 있다. 이것을 표기시 우측부터 4개씩 끊어서 표기하면...
- 이진수가 11101100 (8개), 101010 (6개) 일 경우 4개씩 끊으면
- 1110 1100 과 10 1010 으로 표기가능.
- 이것을 끊은 것으로 표기하면 십진수로 각각 14, 12, 2, 10 으로 표기 된다.
- 뭔가 감이 오지 않는가???
이진수 4개로 표시할 수 있는 십진수의 최대값은 15이고, 당연히 십육진수는 십진수 15까지 표기된다.
따라서 이진수 4개씩 끊어서 표기하면 십육진수 한개로 변경이 쉽다.
결론적으로 임의의 이진수 2개는 각각 아래와 같이 표기할 수 있다.
- 0b 1110 1100 -> 0x dc
- 0b 10 1010 -> 0x 2a
이때 주의점은 오른쪽 부터 4개씩 끊어야 한다는 것.
꼼수
- 진수에 대해서 확실히 이해를 했다면 이걸 쉽게 할 수 있는 방법이 있다.
- 윈도우7과 8, 10 에는 기본적으로 계산기 프로그램이 있고, 거기에 프로그래머용으로 선택할 수 있다.
- 그걸 선택하면 이진수, 십진수, 십육진수로 자유롭게 변경 및 계산을 할 수 있도록 해준다.
- 꼭 이해하고 이걸 사용하길 바람....
본 문서는 그간 공부한 것을 토대로 필자 본인의 머리에서 나온것임.
반응형
'컴퓨터구조 및 자료구조' 카테고리의 다른 글
metric prefixes(미터법 접두사), si 접두어 (0) | 2018.10.06 |
---|---|
달팽이 코드 (0) | 2017.02.05 |
DAY005. SW Engineering & Programming Language (1) | 2017.01.13 |
DAY004. DB and Network (0) | 2017.01.12 |
DAY003. Computer Sciensce & Data Structuer & Algorithm (1) | 2017.01.11 |
댓글