シフト演算とOR演算の使用例

1185 ワード

理解しにくいですが、、、私は本当に理解していますが、もう少しで死ぬところでした.
とにかく、問題はこうです.

これは、ビット0〜31の間に文字ビットがそれぞれ加わる問題である.
私はあなたのビット移動を理解することができますが、なぜOR演算をするのか、私は本当に多くの頭を働かせました.

いくつかの考えを出した.OR演算の定義に関連付けられている場合、OR演算には1があれば無条件に1とする特徴がある.この点を考えると、無条件にどんな値段でも引き留めることができると思います.
したがって,文字ビットを移動しnumとOR演算を行い,文字ビットをnumに上書きする方式を選択した.
#include <stdio.h>

int main() {
    unsigned int num;
    char a, b, c, d;

    printf("첫번째 문자를 입력하시오: ");
    scanf("%c", &a);
    num = a;

    printf("두번째 문자를 입력하시오: ");
    scanf(" %c", &b);
    num = b << 8 | num;

    printf("세번째 문자를 입력하시오: ");
    scanf(" %c", &c);
    num = c << 16 | num;

    printf("네번째 문자를 입력하시오: ");
    scanf(" %c", &d);
    num = d << 24 | num;

    printf("결과값: %x\n", num);
    return 0;
}