티스토리 뷰
숫자형 사칙연산을 하다 보니 갑자기 "비트 연산자를 정리하자."라는 생각을 하게 되었다.
비트 연산은 아래와 같이 6개 정도 존재한다.
연산자 | 설명 |
& | 논리곱으로 서로가 동일한 값이 존재해야지 결과가 나옴 and 연산 |
| | 논리합으로 한쪽만 맞아도 결과가 나옴. or 연산 |
^ | xor 연산. 논리합의 반대로 계산됨. |
~ | 이진수를 모두 반대로 변경해 버림 |
<< | 왼쪽으로 비트 이동함. n번 만큼 2를 곱함. |
>> | 오른쪽으로 비트 이동. n번 만큼 2를 나눔. |
비트 연산의 설명은 위와 같고 예시로 아래와 같이 5, 7을 이진수로 하여서 계산을 해보자.
>>> 5 & 7
5
& 연산의 경우 각 자리수 마다, 곱하기를 하면 된다. 그렇게 될 경우 00000101 값이 나오게 되고 5라는 결과값을 얻을 수 있다.
>>> 5 | 7
7
| 연산의 경우 각 자리수마다 1이 한 곳이라고도 있으면 1로 채워주면 된다. 따라서 00000111의 값이 되고 10진수로 변환을 하면 7이라는 값이 된다.
>>> 5 ^ 7
2
^ 연산은 | 연산자의 반대로 생각을 하면 된다. 각 자릿수 모두가 1을 가지고 있으면 0으로 결과를 반환하면 된다.
>>> ~5
-6
~를 사용하게 되면 00000101의 이진수를 11111010으로 반대로 변환하여 음수를 만든다. 음수로 바꾸면 보수처리를 하기 위해 + 1을 한다. 그러나 ~연산은 단순히 값을 반대로 옮긴 것이기 때문에 보수처리 없이 -6 값이 나오게 된다.
>>> 5 << 1
10
설명은 왼쪽으로 비트를 이동시킨다고 이야기를 하는데 쉽게 생각해서 5 * 2로 생각하면 된다. 만약에 5 << 2으로 하게 되면 5 * 2 * 2라고 계산이 되어서 20이라는 결과값을 얻게 된다.
>>> 5 >> 1
2
>> 연산은 반대로 비트를 오른쪽으로 이동시키는 것인데 쉽게 생각해서 5 / 2의 몫이 값으로 나오는 것이다. 5 >> 2으로 하게 되면 5 / 2 / 2 라고 계산이 되어 1이라는 값이 나온다.
프로그래밍을 하다보면 비트 연산자를 사용할 일은 없는 듯하다. 다만 if문을 사용할 때 &, | 연산자 정도 사용한다. 그렇지만 다른 사람이 작성한 소스를 보다 보면 간혹 비트 연산자를 사용하는 경우가 있다. 특히 암호화 알고리즘을 보다 보면 비트 연산자를 사용하게 된다. 그럴 때 쉽게 읽기 위해서 미리 알아두고 있는 편도 나쁘지 않다고 생각이 된다.
'IT기술, 프로그래밍 > python' 카테고리의 다른 글
python 문자열(String) 합치기, 곱하기 (0) | 2019.11.10 |
---|---|
python 작은따옴표('), 큰따옴표(") 역할 (0) | 2019.11.10 |
python 변수선언 - 숫자형 (0) | 2019.11.03 |
python 설치 (0) | 2019.11.03 |
Jupyter 설치 방법 (0) | 2019.11.03 |
- Total
- Today
- Yesterday
- java double
- Java 기초
- python format
- string method
- Java
- 펀드
- Crawling
- 경제
- 프로그래밍
- python 문자열
- 개발
- 경재
- Dynamodb
- Polly
- 주식
- 프로그램
- java byte
- 경제용어
- java float
- AWS DynamoDB
- java 정수형
- string 매서드
- 크롤링
- AWS
- java long
- byte 정수형
- Lambda
- Python
- web
- AWS Lambda
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |