티스토리 뷰

반응형

num1 = 2 -> 0010

num2 = 3 -> 0011

& AND num1&num2 0010
| OR num1|num2 0011
^ XOR(다를 때 1/같을 때 0) num1^num2 0001
~ not 연산자 ~num1 1101
<< 왼쪽이동 num1<<2 1000
>> 오른쪽이동 num1>>2 0000

- 범위를 벗어나면 없어진다고 생각하자.(시스템에 따라 다르게 처리. 앞으로 돌아가진 않음)

- 내부적으로 비트로 연산을 하고 결과는 정수로 보여준다.

 

자주 사용하는 모음

N&1

  • 양의 정수의 짝수 홀수 판별
  • N%2(나머지 연산) 보다 효율이 좋다
  • 연산 후에 마지막을 비트 값이 1인지 0인지로 판단한다.

1<<n

  • 2^n 값이다. 2^n을 계산하는 것 보다 성능이 좋다
  • power set(모든부분집합)인 공집합과 자기 자신을 포함한 모든 부분집합을 구할 때 사용한다.

i & (1 << j)         /        (i << j) & 1

  • 어떤 숫자 i가 있을 때 j번째 비트의 값이 1인지 아닌지 판단.
  • 계산 결과는 i의 j 번째 비트가 1인지 아닌지를 의미한다.

 

Q. 0과 1로 이루어진 1차 배열에서 7개의 byte를 묶어서 10진수로 출력하기

inp = input()

# 풀이 1
for i in range(0, len(inp), 7):
	for j in range(i, i+7):
    	res = res * 2 + int(inp[j])
    print(res, end= " ")

# 풀이 2
for i in range(0, len(inp), 7):
	cnt = res = 0
    j = i
    while j < len(inp) and cnt < 7:
    	res = res * 2 + int(inp[j])
        cnt += 1
        j += 1
    print(res, end= " ")

 

 

 

 

 

반응형

'알고리즘 > 알고리즘 종류' 카테고리의 다른 글

진수  (0) 2020.05.16
엔디안(Endianness)  (0) 2020.05.14
복잡도 분석  (0) 2020.05.08
[python] 선택정렬(Selection Sort) & 삽입정렬(Insertion Sort)  (0) 2020.04.24
[python] BFS 응용  (0) 2020.04.12
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
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
글 보관함