1. 16진수 8진수 표현 - 아래의 코드를 분석하여 출력값을 예상하고, 실행값과 비교하시오.

#include <stdio.h>

int main(void)
{
    int num1 = 0x0F;    // 16진수 리터럴
    int num2 = 0x0B;    // 16진수 리터럴
    int num3 = 010;     // 8진수 리터럴
    int num4 = 011;     // 8진수 리터럴

    printf("0x0F의 10진수 정수 값: %d \n", num1);
    printf("0x0B의 10진수 정수 값: %d \n", num2);
    printf(" 010의 10진수 정수 값: %d \n", num3);
    printf(" 011의 10진수 정수 값: %d \n", num4);

    printf("%d-%d=%d \n", num1, num2, num1 - num2);
    printf("%d+%d=%d \n", num3, num4, num3 + num4);

    return 0;
}

 

 

2. 비트연산자 - 아래의 코드를 분석하여 출력값을 예상하고, 실행값과 비교하시오.

2.1 AND 연산자 - 둘 다 1인 비트만 1

#include <stdio.h>

int main(void)
{
    int a = 12;   // 00001100
    int b = 10;   // 00001010

    int result = a & b; // 00001000

    printf("a & b = %d\n", result); // 8
    return 0;
}

 

 

2.2 OR연산자 - 하나라도 1이면 1

#include <stdio.h>

int main(void)
{
    int a = 12;   // 00001100
    int b = 10;   // 00001010

    int result = a | b; // 00001110

    printf("a | b = %d\n", result); // 14
    return 0;
}

 

2.3 XOR 연산자 - 같으면 0, 다르면 1

#include <stdio.h>

int main(void)
{
    int a = 12;   // 00001100
    int b = 10;   // 00001010

    int result = a ^ b; // 00000110

    printf("a ^ b = %d\n", result); // 6
    return 0;
}

 

 

2.4 ~ 연산자

#include <stdio.h>

int main(void)
{
    int a = 10;   // 00000000 00000000 00000000 00001010
    int result = ~a;

    printf("~a = %d\n", result); // -11
    return 0;
}

 

 

2.5 << (왼쪽 shift) 연산자 - 비트를 왼쪽으로 이동 = ×2

#include <stdio.h>

int main(void)
{
    int a = 3;    // 00000011
    int result = a << 2; // 00001100

    printf("a << 2 = %d\n", result); // 12
    return 0;
}

 

2.6 >>  (오른쪽 shift) 연산자 - 비트를 왼쪽으로 이동 = ÷2

#include <stdio.h>

int main(void)
{
    int a = 16;   // 00010000
    int result = a >> 2; // 00000100

    printf("a >> 2 = %d\n", result); // 4
    return 0;
}

 

+ Recent posts