본문 바로가기

창고/보관

Common LISP - 내장 함수

이 포스트는 Common LISP를 공부하며 조우한 리스프 내장 함수를 기록해놓고, 이를 익히는데 목적이 있다. 따라서 이 포스트는 언제고 추가될 여지를 갖는다.


ash

(ash num shift)

ash는 비트 이동 연산자이다. C에서는 << 혹은 >> 연산자를 사용한다.

#include <stdio.h>

int main(void)
{
    int num = 8;

    int res1 = num<<1;
    int res2 = num<<2;

    printf(res1);
    printf(res2);
    return 0;
}

위 코드에서 res1은 num의 비트 열을 왼쪽으로 1칸, res2는 num의 비트 열을 왼쪽으로 2칸 이동시킨 값이 반환된다. num은 8이므로 비트 열로 나타내면, 00000000 00000000 00000000 00001000가 된다. 2진수 체제에서 왼쪽으로 1칸 이동은 '2배'의 의미와 같다고 할 수 있다. 따라서 res1은 00010000이므로 16, res2는 32가 되겠다.

 

이를 LISP로 나타내면 이와 같다.

> (ash 8 1)
16

> (ash 8 -1)
4