진법과 비트
진법
10진법
: 실생활에서 사용하는 각 자릿수를 0~9까지 나타내는 진법
2진법
: 가장 기본적인 전기적 신호의 On/Off 상태를 0과 1로 표현한 진법
16진법
: 16개 (0~9, A~F)의 문자로 수를 표현하는 진법
비트
비트 (bit)
: 컴퓨터에서 사용하는 데이터의 최소 단위 바이트 (byte)
: 8비트로 구성된 데이터의 단위, 메모리에 저장되는 최소 단위
1바이트는 256가지 수를 표현할 수 있다. (10진수로 255, 2진수로 11111111, 16진수로 FF까지 나타낼 수 있다.)
최상위 비트 (MSB)
: Most Significant Bit의 약자, 비트로 구성된 이진 데이터에서 가장 왼쪽에 있는 비트, 숫자의 가장 큰 영향을 미친다.
최하위 비트 (LSB)
: Least Significant Bit의 약자, 비트로 구성된 이진 데이터에서 가장 왼쪽에 있는 비트, 숫자의 가장 작은 영향을 미친다.
부호 비트
: MSB
가 0이면 양수, 1이면 음수를 나타냄. 부호를 가지는 데이터를 Signed 데이터
, 부호없이 양수만 나타내는 데이터를 unsigned 데이터
라 부른다.
바이트 오더링
바이트 오더링 (Byte Ordering)
: 2바이트 이상의 데이터는 메모리에 연속적으로 저장되는데, 이때 각 바이트가 메모리에 정렬되는 방식을 바이트 오더링
이라고 부른다. 바이트 오더링의 방식은 크게 빅 엔디안
과 리틀 엔디안
이 있다.
빅 엔디안 (Big Endian)
: 큰 바이트부터 낮은 주소에 저장
리틀 엔디안 (Little Endian)
: 작은 바이트부터 낮은 주소에 저장
비트 연산
비트 연산
: 피연산자를 2진수로 표현하여 비트 단위로 연산하는 것
논리 연산자 | 설명 |
---|---|
x | y | 둘 중 하나라도 참이면 결과는 참입니다. (OR) |
x && y | 둘 다 참이면 결과는 참입니다. (AND) |
!x | 참이면 결과는 거짓, 거짓이면 결과는 참입니다. (NOT) |
비트 연산자 | 설명 |
---|---|
x | y | 두 비트 중 하나라도 1이면 결과는 1입니다. (OR) |
x & y | 두 비트 모두 1이면 결과는 1입니다. (AND) |
x ^ y | 두 비트가 같으면 결과는 0, 다르면 결과는 1입니다. (XOR) |
~x | 비트가 0이면 결과는 1, 1이면 결과는 0으로 모든 비트를 반전시킵니다. (NOT) |
시프트 연산자 | 설명 |
---|---|
x « n | 비트를 n만큼 왼쪽으로 이동합니다. 오른쪽 빈 칸은 모두 0으로 채웁니다. == x * 2n |
x » n (산술 시프트) | 비트를 n만큼 오른쪽으로 이동합니다. 왼쪽 빈 칸은 가장 왼쪽에 있던 비트(MSB)와 동일한 비트 값으로 채웁니다. (양수는 양수, 음수는 음수로 부호가 유지됩니다.) == x / 2n |
x »> n (논리 시프트) | 비트를 n만큼 오른쪽으로 이동합니다. 왼쪽 빈 칸은 모두 0으로 채웁니다. (음수는 부호가 유지되지 않습니다.) |
출처 : Dreamhack