이진법( Binary ) 란?
- 이진법( Binary )은 0과 1이라는 두 개의 숫자만을 사용하여 수를 나타내는 진법을 말합니다. 컴퓨터는 전기 신호의 유무의 따라서 0과 1로 구분하기 때문에 2진법을 기반으로 발전하였습니다.
이진법을 알아야 하는 이유
- 컴퓨터에 다루는 모든 데이터는 이진수로 이루어져 있습니다. 개발에서 직접 이진수를 다루던가 또는 위 사진에서 처럼 잘못된 로직에 의해서 메모리가 덮어씌워지지는 않았는지 여부를 직접 확인할 필요가 있습니다. 위 사진에 나와있는 메모리는 16진수로 이루어져 있지만 2진수의 개념을 알아야 2진수 10진수 16진수로 변환할 수 있습니다.
이진법 표현 방법
- 이진법은 각 자릿수가 2의 거듭제곱으로서 첫 번째 자릿수는 21 을 의미하고 두 번째 자릿수는 22을 의미하는 것처럼 자릿수가 증가할 때마다 "지수"가 증가합니다. 그리고 각 자리수의 값을 더하여 10진수로 전환할 수 있습니다.
예시
( unsigned ) 2진수 | 10진수 |
---|---|
0000 0001 | 1 |
0000 0101 | 5 |
0000 1111 | 15 |
0001 0000 | 16 |
0011 0000 | 48 |
1111 1111 | 255 |
이진법 음수 표현 방법
- sigend 데이터 타입일 경우 MSB( Most Significant Bit ) 가 1이면 음수 0이면 양수로 표현합니다.
MSB는 가장 왼쪽에 있는 bit로서 MSB 가 1일 경우 10진수로 변환할 때 2의 보수를 취하여 변환해야 합니다.
- 반대로 음의 10진수를 signed 이진수로 변환할 때는 2의 역보수를 이용해야 합니다.
( 2의 역보수는 2의 보수를 반대로하여 먼저 1을 빼고 다시 한 번 비트를 반전시키면 됩니다. )
예시
( signed ) 2진수 | 10진수 |
---|---|
1000 0000 | -128 |
1111 1111 | -1 |
1000 1111 | -113 |
1111 0000 | -16 |
1010 1010 | -86 |
1000 0001 | -127 |
'수학' 카테고리의 다른 글
C++로 최대 공약수, 최소 공배수 구하기 (0) | 2023.02.08 |
---|---|
조합( combination )이란? (0) | 2023.01.28 |
순열( permutation )이란? (0) | 2023.01.28 |
십육진법( Hexadecimal )이란? (0) | 2022.10.09 |