auの日記

プログラミング初心者の日記。(auはハンドルネームです)

C言語でシフト演算子を使う

auです。
前回は10進数を2進数に変換するプログラムを組みました。
今回は、2進数をシフト演算子を使って変化させたいと思います。

シフト演算子とは

シフト演算子とは、ビット演算子(0か1で表すことのできる演算子)の一つで、桁を移動することができる演算子です。
シフト演算子は、「n = n << 2」のようにして使い、2ビット分左にずらすという意味です。「n = n >> 2」で2ビット分右にずらすという意味になります。
実際にプログラムを組んでみます。

#include <stdio.h>

int main(void){
    int decimal = 0;
    int binary = 0;
    
    binary = 0b0011; // 10進数の場合 3
    decimal = 10; // 2進数の場合 1010
    
    printf("2進数変換前: %d\n", binary);
    printf("10進数変換前: %d\n", decimal);
    
    binary = binary << 2; // 左に2個分ずらす
    decimal = decimal << 2; // 左に2個分ずらす 
    
    printf("2進数変換後: %d\n", binary); // 1100
    printf("10進数変換後: %d\n", decimal); // 101000
    
    return 0;
}

// 実行結果
2進数変換前: 3
10進数変換前: 10
2進数変換後: 12
10進数変換後: 40

10進数の入力でも左に2ビット分ずれていることがわかりました。