C++프로그래밍/어셈블리 언어

쉬프트 연산

season97 2024. 9. 15. 10:54

 

▶ 쉬프트 연산

 

ㆍ 개념은 매우 간단하다.

 

1. >> 오른쪽으로 한칸 밀겠다

2. << 왼쪽으로 한칸 밀겠다

 

어셈블리와 프로그래머 계산기를 이용한 실습

ㆍ eax에 0x12345678이라는 값을 넣어보고 16진수로 출력해봤다.

ㆍ shl키워드 : 비트연산 왼쪽으로 숫자만큼 밀어라

ㆍ shr키워드 : 비트연산 오른쪽으로 숫자만큼 밀어라

결과 화면

ㆍ 위 코드를 실행시키니 결과가 이렇게 나왔다! 프로그래머 계산기를 이용해 확인해 보자

 

1. HEX(16진수) : 12345678을 입력해주었다.

2. Lsh 8을 하자 어셈블리와 같은 결과 출력

3. Rsh 8을 하자 어셈블리와 같은 결과 출력

 

더보기

어셈블리어가 슬슬 눈에 들어오는것 같다.

▶ 쉬프트연산의 장점

ㆍ 2의 배수와 관련된 연산을 압도적으로 빠른 속도로 연산 처리할 수 있다.

ㆍ 1칸을 왼쪽으로 옮기면 2를 곱한것 오른쪽으로 옮기면 2로 나눈것.

 

ㆍ 2칸을 왼쪽으로 옮기면 4를 곱한것 오른쪽으로 옮기면 4로 나눈것.

 

※ 이런식으로 내부적으로 빠른 연산을 수행할 수 있다.

 

▶ 쉬프트 연산의 실질적 활용 예시

ㆍ 위와 같은 곱셈과 나눗셈

ㆍ 게임서버에서 ObjectID를 만들 때 (낮은 비트로 만들고 쉬프트연산으로 앞쪽으로 쭉~밀어줘서 오브젝트와 캐릭터를 구분하는 그룹 등으로 이용한다)

'C++프로그래밍 > 어셈블리 언어' 카테고리의 다른 글

어셈블리 분기문  (1) 2024.09.15
어셈블리 논리연산  (0) 2024.09.15
문자와 엔디안  (0) 2024.09.14
변수와 레지스터  (0) 2024.09.14
레지스터 기초  (0) 2024.09.14