숫자 체계는 숫자를 표현하는 규칙의 모임으로, 어떤 기호를 쓰고 자리의 값이 어떻게 정해지는지를 정한다. 우리가 흔히 쓰는 10진수는 0부터 9까지의 10개 기호를 사용하고, 자릿값은 진법의 거듭제곱으로 증가한다. 자릿값은 자릿수의 위치에 따라 달라지며 예를 들어 345는 3 x 100 + 4 x 10 + 5 x 1이다. 모든 숫자 체계는 하나의 기준 숫자(진법)로 정해지며, 진법이 정해지면 한 자리에서 사용할 기호의 개수와 자릿값의 증가 방식이 정해진다.
2진수는 0과 1만 사용하는 수 체계로, 전기 신호의 두 상태를 가장 안정적으로 구분하는 특성에서 기인한다. 전기가 흐르면 1, 흐르지 않으면 0으로 표현한다. 2진수의 자릿값은 항상 2의 거듭제곱이며, 오른쪽이 가장 작은 자리이고 맨 오른쪽은 2^0이다. 한 자리 이동은 값을 곱하거나 나누는 효과를 낳으며, 읽는 방향은 오른쪽부터 시작한다. 10진수를 2진수로 바꾸려면 2로의 나눗셈을 반복하고 남은 나머지를 거꾸로 읽는다. 예로 10은 1010으로 바뀐다. 초보자가 꼭 알아야 할 핵심은 나눗셈의 나머지를 즉시 기록하고, 몫이 0이 될 때까지 나눔을 멈추지 않는 점이다.
비트 연산은 숫자를 비트 단위로 계산하는 연산이다. 컴퓨터는 숫자를 0과 1로 저장하므로 각 비트를 직접 다룬다. 일반 연산은 숫자 전체를 하나의 값으로 보지만 비트 연산은 각 비트 자리별로 계산하고, 결과도 새로운 정수값으로 만들어진다. 비트 연산의 목적은 값을 계산하기보다 상태를 표현하고 제어하는 데 있다. 정수에서만 사용할 수 있으며 부호도 함께 다루는 경우가 많다.
6개 연산자는 두 숫자를 비교하는 이항 연산자 3개(&, |, ^)와 단항 연산자 1개(~)로 구성된다. 또 숫자를 이동시키는 시프트 연산자 <<, >>가 있으며, 각 연산은 비트 단위로 작동한다. AND는 같은 자리의 두 비트가 모두 1일 때 1, OR는 같은 자리의 둘 중 하나라도 1이면 1, XOR는 같은 자리가 다를 때 1이다. 시프트는 왼쪽으로 이동하면 2배씩, 오른쪽으로 이동하면 몫이 줄어드는 효과를 낸다. ~는 비트를 모두 뒤집는 연산자로, 파이썬에서의 특성상 결과가 예측과 다를 수 있어 최종 공식은 ~x = -(x+1)로 이해하는 것이 안정적이다. 정수 전용 비트 연산의 이유는 비트 단위 계산의 명확성 때문이다.
실전 활용으로 플래그(flag) 처리를 들 수 있다. 여러 ON/OFF 상태를 하나의 값으로 묶어 관리하면 상태가 늘어나도 코드 구조를 크게 바꾸지 않고 확장할 수 있다. 2의 거듭제곱 값을 각각의 비트 자리에 배치하고, OR로 합치면 하나의 정수로 여러 상태를 표현 가능하다. 특정 상태의 존재 여부는 AND로 확인하며, 제거는 해당 비트만 0으로 만드는 연산으로 처리한다. 이러한 방식은 상태를 하나의 정수로 전달·저장하고, 계산 속도도 빠르게 하며, 구성도 확장에 강하다는 점이 강점이다.
#
비트연산자정리
#
파이썬연산자정리
#
파이썬시프트연산
#
파이썬비트연산자
#
파이썬비트연산
#
파이썬기초문법
#
파이썬ANDORXOR
#
파이썬2진수
#
코딩기초
#
파이썬이진수