개발자 면접 트레이딩 - 파이썬 알고리즘 문제(14)
(1). 개발자 면접 트레이닝 - 비트 위치 A,B 로 비트열 M을 N으로 삽입
① 비트(Bit)구조 이해하는 것이 중요
② 비트 연산자에 대해서 개념 숙지 후 코딩 실습
③ 비트열 삽입 관련 코딩 문제는 자주 출제 된다.
④ 예를들어 스택 사이즈가 M = 10011, N = 10000000000 일 경우 i = 1 , j = 7 이 주어졌을 때 결과는 10000100110 출력
(2). 소스 코드
#updateBits.py
"""
N = 10000000000
M = 10011
i = 1
j = 7
output : 10000100110
"""
def printBinary(num):
b_num = bin(num)
print(b_num[2:])
def getMask(i,j,max_int):
left = max_int << (j+1)
right = (1 << i) - 1
return left | right
def UpdateBits(m,n,i,j):
max_int = 2 ** 32 - 1
mask = getMask(i,j,max_int)
n_cleared = n & mask
m_shifted = m << i
# return 10000100110
return n_cleared | m_shifted
# 19 = 10011
a = 19
# 1024 = 10000000000
b = 1024
i = 1
j = 7
result = UpdateBits(a,b,i,j)
printBinary(result)
(3). 소스 코드 분석
① 11 라인 : 바이트 출력 위한 printBinary 메소드 선언
② 14 라인 : 비트열 위치 변경 위한 getMask 메소드 선언
③ 19 라인 : 위치 2개와 비트 2개를 이용해서 비트를 업데이트 하는 updateBits 메소드 선언
④ 27 ~ 끝 : 위치 정보, 비트 선언 후 업데이트 된 비트 출력
(4). 실행결과 - 비트 업데이트 작업 정상 출력
'언어 > Python' 카테고리의 다른 글
파이썬 아나콘다(Anaconda) - 기초 사용법 정리(1), 가상환경 생성 (8) | 2017.12.04 |
---|---|
파이썬 알고리즘 - 계단을 오르는 방법 횟수(재귀함수) (0) | 2017.09.06 |
파이썬 알고리즘 - 스택(Stack)으로 큐(Queue)를 구현하기 (0) | 2017.08.31 |
파이썬 알고리즘 - 스택(Stack)을 Set(리스트)으로 구현하기 (0) | 2017.08.29 |
파이썬 알고리즘 - 스택(Stack)에서 최소값 출력하기 (0) | 2017.08.28 |
개발자 면접 트레이딩 - 파이썬 알고리즘 문제(14)
(1). 개발자 면접 트레이닝 - 비트 위치 A,B 로 비트열 M을 N으로 삽입
① 비트(Bit)구조 이해하는 것이 중요
② 비트 연산자에 대해서 개념 숙지 후 코딩 실습
③ 비트열 삽입 관련 코딩 문제는 자주 출제 된다.
④ 예를들어 스택 사이즈가 M = 10011, N = 10000000000 일 경우 i = 1 , j = 7 이 주어졌을 때 결과는 10000100110 출력
(2). 소스 코드
#updateBits.py
"""
N = 10000000000
M = 10011
i = 1
j = 7
output : 10000100110
"""
def printBinary(num):
b_num = bin(num)
print(b_num[2:])
def getMask(i,j,max_int):
left = max_int << (j+1)
right = (1 << i) - 1
return left | right
def UpdateBits(m,n,i,j):
max_int = 2 ** 32 - 1
mask = getMask(i,j,max_int)
n_cleared = n & mask
m_shifted = m << i
# return 10000100110
return n_cleared | m_shifted
# 19 = 10011
a = 19
# 1024 = 10000000000
b = 1024
i = 1
j = 7
result = UpdateBits(a,b,i,j)
printBinary(result)
(3). 소스 코드 분석
① 11 라인 : 바이트 출력 위한 printBinary 메소드 선언
② 14 라인 : 비트열 위치 변경 위한 getMask 메소드 선언
③ 19 라인 : 위치 2개와 비트 2개를 이용해서 비트를 업데이트 하는 updateBits 메소드 선언
④ 27 ~ 끝 : 위치 정보, 비트 선언 후 업데이트 된 비트 출력
(4). 실행결과 - 비트 업데이트 작업 정상 출력
'언어 > Python' 카테고리의 다른 글
파이썬 아나콘다(Anaconda) - 기초 사용법 정리(1), 가상환경 생성 (8) | 2017.12.04 |
---|---|
파이썬 알고리즘 - 계단을 오르는 방법 횟수(재귀함수) (0) | 2017.09.06 |
파이썬 알고리즘 - 스택(Stack)으로 큐(Queue)를 구현하기 (0) | 2017.08.31 |
파이썬 알고리즘 - 스택(Stack)을 Set(리스트)으로 구현하기 (0) | 2017.08.29 |
파이썬 알고리즘 - 스택(Stack)에서 최소값 출력하기 (0) | 2017.08.28 |