쉬프트 연산
쉬프트 연산은 비트를 좌측이나 우측으로 옮기는 연산인데,
산술 쉬프트 연산에서는 최상위 비트를 그대로 유지함
ex) 1001 1010 >>1 => 1101 0101
어셈블리에서는 shl, shr을 통해 쉬프트 연산을 할 수 있다.
mov eax, 0x12345678
처음에 eax에 4바이트의 데이터를 저장한다.
shl eax, 8
=>34567800
shr eax, 8
=>345678
왼쪽으로 8비트(2바이트)만큼 이동했다가 오른쪽으로 다시 8비트만큼 이동했다.
쉬프트 연산을 할 때 <<1을 하면 부호가 양수인 가정 하에 모든 비트가 x2되므로 값이 두배 증가한다. >>1을 하면 마찬가지로 양수일 때 값이 원래 값에 2로 나눈 것과 같다. 그래서 컴파일러가 내부적으로 계산을 할 때 사용하기도 한다.
'CS' 카테고리의 다른 글
| [어셈블리] 반복문 (0) | 2022.06.18 |
|---|---|
| [어셈블리] 분기문 (0) | 2022.06.18 |
| [어셈블리] 입출력, 사칙 연산 (0) | 2022.06.18 |
| [어셈블리] 변수와 레지스터 (0) | 2022.06.18 |
| [어셈블리] 레지스터 기초 (0) | 2022.06.18 |