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ビット分ずれていることがわかりました。