반응형
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#-*- coding:utf-8 -*- | |
#test by Xd | |
bitx = 0x53 # 0000 0101 0011 | |
bity = 0x42 # 0100 0010 | |
print(hex(bitx & bity)) #and 0100 0010 (0x42) 비트의 and는 두 개의 바이트를 비교하여 동일한 자리의 비트가 참이면 그대로 참, 하나라도 거짓이면 거짓으로 한다. | |
print(hex(bitx | bity)) #or 0101 0011 (0x53) 비트의 or은 두 개의 바이트를 비교하여 동일한 자리의 비트 중 하나라도 참이면 참, 둘 다 거짓이면 거짓으로 한다. | |
print(hex(bitx ^ bity)) #xor 0001 0001 비트의 xor은 or과 비슷하게 두 개의 바이트를 비교하여 동일한 자리의 비트 중 하나가 참이면 참, 둘 다 거짓이면 거짓이지만 둘 다 참이어도 거짓으로 한다. | |
print(hex(bitx >> 1)) #shift 0101 0011 -> 0010 1001 | |
print(hex(bitx << 3)) #shift 0101 0011 -> 0010 1001 1000 | |
""" | |
시프트가 왼쪽으로 갈 때 이동하는 | |
왼쪽 비트가 1이면 그 값을 보존시킨다. | |
0000 0000 0000처럼 앞에 4비트를 추가한다. | |
오른쪽으로 갈 때는 오른쪽 비트가 1이라도 없애고 맨 앞에 0을 추가한다. | |
왼쪽으로 갈 때 왼쪽 비트가 1이 아닌 0이면 마찬가지로 뒤에 0을 추가한다. | |
""" |

1비트는 1 또는 0으로만 표현될 수 있는 데이터 단위이다.
비트 연산자의 종류에는 &, |, ^, ~, >>, <<가 있는데 이 중 ~는 1의 보수로 비트를 반전시키는데 그걸 이해하려면 2의 보수개념을 알아야 한다. 여기서는 다루지 않음
& 비트의 and 연산을 한다. 비트 값을 서로 비교했을 때 동일한 자리의 비트가 참이면 참, 하나 이상이 거짓이면 거짓이다.
| 비트의 or 연산을 한다. 비트 값을 서로 비교했을 때 동일한 자리의 비트가 하나 이상이 참이면 참, 둘 다 거짓이면 거짓이다.
^ 비트의 xor 연산을 한다. 비트 값을 서로 비교했을 때 동일한 자리의 비트의 값이 다른 경우 거짓, 같으면 참이다.
>> n 비트를 n만큼 오른쪽으로 이동(시프트)시킨다. 비트 값이 오른쪽으로 밀려나면 해당 비트를 없애고 맨 앞(왼쪽)을 0으로 채운다.
<< n 비트를 n만큼 왼쪽으로 이동(시프트)시킨다. 비트 값이 왼쪽으로 밀려날 때 해당 비트가 0이면 없애고 맨 끝(오른쪽)을 0으로 채우고 해당 비트가 1이면 비트를 보존시키면서 맨 앞에 새로 4비트를 추가한다.
예)
0x58을 << 3 했을 때
0x58 = 0101 1000
0010 1100 0000으로 시프트한다.
반응형
'homework-jueon > 0x01-200제' 카테고리의 다른 글
27. 시퀀스 자료 인덱싱 (0) | 2020.01.05 |
---|---|
26. 시퀀스 자료형 (0) | 2020.01.04 |
24. 논리 연산자 (0) | 2020.01.02 |
23. 관계 연산자 (0) | 2020.01.02 |
21. 연산자 축약 (0) | 2020.01.02 |