본문 바로가기

*집필*/*집필* Python

Python 회전 시프트 함수 (Rotation shift Func)

모두가 알고 있다 싶이 Python의 변수 선언의 애초 초기 그 사이즈를 설정하지 않는다.

다만 변수에 첫 인자 값을 넣음으로서 변수의 Type이 결정되기 때문이다.

필자와 같이 C 또는 C++를 우선적으로 접해봤다면 이 부분에 대한 거부감이 들 수 있다.

Python으로 작업을 수행하던 중 회전 시프트 연산을 수행해야할 경우가 있었다.

물론 module을 찾아보면 나올지도 모르겠으나. 현재 필자가 알고 있는 Rotation Shift Function은 어느 모듈에 어느 위치에 있는지 모른다.

그리하여 손수 함수를 작성해 보았다.

>def rol_Dword(value, rotation):

> tail = value >> (32-rotation)

> head = (value - (tail << (32 - rotation))) << rotation

> return head + tail

>def ror_Dword(value, rotation):

> tail = value >> rotation

> head = (value - (tail << rotation)) << (32 - rotation)

> return head + tail

위 코드는 입렵 값에 대한 검증이 되어 있지 않은 상태 이므로 사용 시 Argument에 대한 사이즈 검증을 하는것이 좋다.