C言語のシフト演算の実装方法について

C言語におけるシフト演算には、左シフトと右シフトの2種類があります。

  1. ビットを左にずらす:<< で表し、数字の2進数をすべて左にいくつかずらし、上位ビットを捨て、下位ビットを 0 で埋める。たとえば、数字 a を n 個ずらすと、結果は a << n になる。
  2. 右シフト演算子: 数の各ビットを右にnビットシフトする演算で、低位ビットは捨てられ、高位ビットは元の数の符号ビットに応じて0または1で埋められる。たとえば、数aをnビット右シフトすると、a >> nとなる。

なお、右シフト演算子は符号付き数と符号無し数で処理挙動が異なることに注意が必要です。符号付き数の場合、右シフト演算子は符号ビットを保持して符号ビットで埋めます。一方、符号無し数の場合、右シフト演算子は 0 で埋めます。

シフト演算の例を以下に示します。

#include <stdio.h>
int main() {
int a = 5; // 二进制表示为 0000 0101
int b = a << 2; // 左移2位,结果为 0001 0100,即20
int c = a >> 1; // 右移1位,结果为 0000 0010,即2
printf("a << 2 = %d\n", b);
printf("a >> 1 = %d\n", c);
return 0;
}

日本語でネイティブに言い換えてください。1つのオプションのみが必要です。

a << 2 = 20
a >> 1 = 2
bannerAds