[OS] Bitwise

immanuelk1m·2024년 6월 18일
0

OS

목록 보기
7/8

Bitwise Logical Operators

short a = 0x0257; // 0000 0010 0101 0111
short b = 0xA463; // 1010 0100 0110 0011

/* AND */
printf(0x%hx & 0x%hx = 0x%hx\n”, a, b, a & b);
// 0x257 & 0xa463 = 0x43 // 0000 0000 0100 0011
/* OR */
printf(0x%hx | 0x%hx = 0x%hx\n”, a, b, a | b);
// 0x257 | 0xa463 = 0xa677 // 1010 0110 0111 0111
/* XOR */
printf(0x%hx ^ 0x%hx = 0x%hx\n”, a, b, a ^ b);
// 0x257 ^ 0xa463 = 0xa634 // 1010 0110 0011 0100
/* NOT */
printf(~0x%hx = 0x%hx\n”, a, ~a);
// ~0x257 = 0xfda8 // 1111 1101 1010 1000

Shift Operators

/* Bitwise shift-right operator (a >> b)*/
/오른쪽 잡고 땡김/
short x = 5; // 0000 0000 0000 0101
x >> 1 == 2; // 0000 0000 0000 0010

/* Bitwise shift-left operator (a << b) */
/왼쪽 잡고 땡김 (2배 증가)/

short x = 5; // 0000 0000 0000 0101
x << 1 == 10; // 0000 0000 0000 1010

printBinary

#include <stdio.h>

// 정수를 이진수로 출력하는 함수
void printBinary(int num) {
    for (int i = 31; i >= 0; i--) {
        int bit = (num >> i) & 1;
        printf("%d", bit);
        if (i % 4 == 0) printf(" "); // 가독성을 위해 4비트마다 공백 추가
    }
    printf("\n");
}

int main() {
    int num;

    // 정수 입력 받기
    printf("정수를 입력하세요: ");
    scanf("%d", &num);

    // 이진수로 출력
    printf("입력한 정수의 이진수 표현: ");
    printBinary(num);

    // 16진수 입력 받기
    unsigned int hexNum;
    printf("16진수를 입력하세요 (예: 0x1A3): ");
    scanf("%x", &hexNum);

    // 16진수를 이진수로 출력
    printf("입력한 16진수의 이진수 표현: ");
    printBinary(hexNum);

    return 0;
}
profile
개발 새발

0개의 댓글

관련 채용 정보