비트 연산 기초
100 == 0x64?
컴퓨터 언어에서 16진수를 표시하기 위해 숫자 앞에 0x 를 붙입니다. 10진수 100은 16 진수로 64이며 0x64로 표현됩니다.
그 이외,
100의 2진수: 0b1100100
100의 10진수: 100
100의 8진수: 0o144
100의 16진수: 0x64
Bin : 2진수 ( binary )
Dec : 10진수 ( decimal )
Oct : 8진수 ( octal )
Hex : 16진수 ( hexadecimal )
비트 연산자 종류
비트 연산의 종류로는 다음과 같이 있습니다.
OR(|) : 둘 중 하나라도 1 이면 1
AND(&) : 둘다 1이면 1
NOT(~)
Exclusive OR(^) : 다르면 1, 같으면 0
Shift(>>, <<) : 비트를 지정한 수만큼 좌우로 이동시킨다)
ex. int num = 15 >> 2 << 1
1111(15) -> 0011(3) -> 0110(6)
오른쪽 쉬프트가 일어났을때 비트 자리를 벗어나면 해당 비트는 짤리게 된다.
참고로, 0x001 0x0001 0x000000001 ... 등 이 모든 16진수 수는 10진수 1과 같다.
예제
문제
입력해준 number가 홀수이면 1부터 number까지의 홀수를 모두 더하고,
짝수이면 1부터 number까지의 짝수를 모두 더해라.
해답
for n in range(number+1):
if number & 0x0001 ^ n & 0x0001 == 0:
s += n
'규린이 IT 개발' 카테고리의 다른 글
[Mysql] 컬럼 추가, 수정, 삭제 (0) | 2021.11.03 |
---|---|
[javascript] 페이지 새로고침 (0) | 2021.11.03 |
[java] JMX, MBean 기초 (0) | 2019.06.12 |
[Python] 파이썬 기초 (0) | 2019.06.12 |
[이클립스] build path (0) | 2019.06.11 |