728x90
- bit : 정보를 구분할 수 있는 최소 단위 (8bit = 1byte)
- byte : 메모리에서 위치를 구분할 수 있는 최소 단위
- 비트 연산자 (같은 자리 비트끼리)
- & : 비트 단위로 AND 연산을 한다. (특정 비트를 0으로 만들 때, 비트 검사)
- | : 비트 단위로 OR 연산을 한다. (특정 비트를 1로 만들 때)
- ^ : 비트 단위로 XOR 연산을 한다. (같으면 0, 다르면 1) (특정 비트가 같은지, 비트 토글(반전시키기))
- ~ : 단항 연산자로서 피연산자의 모든 비트를 반전시킨다.
- << : 피연산자의 비트 열을 왼쪽으로 이동 ( ex) num<<2 == num*=2^2)
(a |=1<<3 : a의 3번 비트를 1로 만들기)
(a &=~(1<<3) : a의 3번 비트를 0으로 만들기) - >> : 피연산자의 비트 열을 오른쪽으로 이동
- 1<<n
- 2^n의 값을 갖는다.
- 원소가 n개일 경우의 모든 부분집합의 수를 의미
- i&(1<<j) : i의 j번째 비트가 1인지 아닌지 의미
- 2진법
def Bbit_print(i):
output = ""
for j in range(7,-1,-1):
output += '1' if i & (1<<j) else '0'
print(output)
for i in range(-5,6):
print('%3d = ' % i, end='')
Bbit_print(i)
- 16진법 -> 2진법
# 16진수 1자리 = 2진수 4자리
def Bbit_print(i):
output = ""
for j in range(7,-1,-1):
output += '1' if i & (1<<j) else '0'
print(output,end=' ')
a = 0x10 # 16진수
print('%d = ' % a,end=' ')
Bbit_print(a)
print()
x = 0x01020304
print('0%X = ' % x, end=' ')
for i in range(0,4):
# oxff : 255 : 11111111(2)
Bbit_print((x>>i*8) & 0xff)
- 엔디안(Endianness)
- 컴퓨터의 메모리와 같은 1차원의 공간에 여러 개의 연속된 대상을 배열하는 방법을 의미하며 HW 아키텍처마다 다르다
- 주의
- 속도 향상을 위해 바이트 단위와 워드 단위를 변환하여 연산 할 때 올바로 이해하지 않으면 오류를 발생 시킬 수 있다.
- 크게 2가지
- 빅 엔디안(Big-endian)
- 보통 큰 단위가 앞에 나옴, 네트워크
- 리틀 엔디안(Little-endian)
- 작은 단위가 앞에 나옴, 대다수 데스크탑 컴퓨터
- 빅 엔디안(Big-endian)
# 엔디안 확인 코드
import sys
print(sys.byteorder)
728x90
반응형
'TIL - 프로그래밍 > 개념, 설정' 카테고리의 다른 글
[Python] 재귀로 순열, 조합 (0) | 2022.03.28 |
---|---|
[Python] 반복과 재귀 (0) | 2022.03.26 |
[Python] 2진수, 8진수, 16진수 (0) | 2022.03.22 |
[Python] 복잡도 분석, 표준 입출력 방법 (0) | 2022.03.20 |
[Python] BFS (0) | 2022.03.18 |
댓글