연산자 | 연산자의 기능 |
---|---|
& | 비트단위로 AND 연산을 한다. (하나라도 0이면 0) 특정비트를 0으로만들때 사용하는 연산 |
\ | 비트단위로 OR 연산을 한다. 특정비트를 1로 만들 때 사용 |
^ | 비트단위로 XOR 연산을 한다. (같으면 0 다르면 1) 비교할때 사용 |
~ | 단항 연산자로서 피연산자의 모든 비트를 반전시킨다.(0011 -> 1100) |
<< | 피연산자의 빈트 열을 왼쪽으로 이동시킨다. (a<<2 0010 -> 1000 == a x (2^2))/(a<<1 == a x 2) |
>> | 피연산자의 비트 열을 오른쪽으로 이동시킨다. (<< 의 경우처럼 생각하면 나눗셈처럼 됨) |
1 << n
i&(1<<i)
계산 결과는 i의 j번째 비트가 1인지 아닌지를 의미한다.
8자리 비트로 변환
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)
# 0000000111100000011000000111
arr = list(map(int,input()))
N = len(arr)
num = 0
for i in range(N):
j = i % 7
# print(arr[i] * (2**(6-j)))
num += arr[i] * (2**(6-j))
# print(num)
if j == 6:
print(num)
'''
01D06079861D79F99F
'''
arr = input()
for x in arr:
num = int(x,16)
for j in range(3,-1,-1):
bit = 1 if num&(1 << j) else 0
print(bit, end = ' ')
print(' ', end = '')
0x
: 16진수0b
: 2진수종류 | 0x1234의 표현 | 0x12345678의 표현 |
---|---|---|
빅 엔디안 | 12 34 | 12 34 56 78 |
리틀 엔디안 | 34 12 | 78 56 34 12 |
import sys
print(sys.byteorder) # little