C 基本講座

ビット演算子でビットを操作する

LinkedInラーニングの無料トライアルを今すぐ試そう

無料で視聴する すべての加入プランを見る
このレッスンでは、ビット単位でさまざまな演算を行うことができる「ビット演算子」と「シフト演算子」について説明します。
講師:
06:26

字幕

このレッスンでは、ビット単位でさまざまな演算を行うことができるビット演算子とシフト演算子について説明します。C 言語にはビット単位でデータを操作するビット演算子が用意されています。ビット演算子はC 言語の流れを組むJava やC# などにも用意されていますが、C 言語以前の高級言語にはあまり用意されていない演算子です。ビット演算を行えるという点でC 言語はアセンブラと同様に制御系の処理に向く言語だと言われます。ビット演算子にはこの表の4種類があります。ビット単位の AND、ビット単位の OR、ビット単位の XOR、ビット単位の反転です。これらはいずれも対象は整数に限られます。ではこれらの演算子についてプログラムを使って確認してみましょう。なお、printf 関数に2進数を表示する変換指定が用意されていませんので、ビットの演算の過程をわかりやすくするために小ビットという自作関数を追加しています。この内容についてはわからなくて構いません。まず & 演算から見てみましょう。プログラムを実行してみます。& 演算はこの図のように両方のビットが1の時のみ結果が1になるビット演算です。 必要なビット以外を0にする処理をマスクと言いますが、そのマスク処理によく使われます。例えばこのような1バイトのビット列の下位4ビットをオフにする場合、そのままにしたいビットを 1、オフにしたいビットを0にした11110000 で& することにより実現できます。実行結果は 10100000 ですから下位の4ビットがオフになっていることがわかります。次は OR 演算を見てみましょう。OR はいずれかのビットが1なら結果が1になるビット演算です。必要なビットを1にする場合にOR は使われます。例えばこのような1バイトのビット列の上位4ビットをオンにする場合、オンにしたいビットは1、そのままにしたいビットを0にした11110000 で OR することにより実現します。実行結果を見ると11111010 ですから、上位4ビットのみ ON になっていることがわかります。次は XOR を見てみましょう。XOR はこの図のように両方のビットが異なる時に結果を1にするビット演算です。特定のビットを反転する場合にXOR は使われます。例えばこのような1バイトのビット列の上位4ビットを反転する場合、反転したいビットを1、そのままにしたいビットを0にした11110000 でXOR することにより実現できます。 実行結果を見てみると、このように上位4ビットが反転されていることがわかります。次は補数を見てみます。補数はこの図のように0を1、1を0にするビット演算です。今 X の内容は10101010 ですからビットを反転することにより01010101になっています。また、Y の内容は11110000 ですから反転することにより00001111 になっています。次はシフト演算子について説明します。C 言語にはこのように2種類のシフト演算子が用意されています。左シフトはこのように記述しこの場合 x を n ビット左へシフトします。右側の空いたビットには0が入り、左側のあふれたビットは捨てられます。左シフトは x が正の場合あふれがなければこのように記述することでx かける 2 の n 乗を計算することと同じになります。右シフトはこのように書き、x を n ビット右へシフトします。左側の空いたビットにはx が符号なしなら 0 が入ります。x が符号付きなら算術シフトを行う処理系では符号桁が入り論理シフトを行う処理系では0 が埋められます。右側のビットは算術シフト、論理シフトに関わらず捨てられます。右シフトは x が正の場合、あふれがなければこのように書いた場合x÷2 の n 乗を計算することと同じになります。 では、プログラムで確認してみましょう。このプログラムを実行すると、z に格納されている値は00111100 ですから、左に2ビットシフトすると11110000、右に2ビットシフトすると 00001111 になります。このレッスンでは、ビット単位でさまざまな演算を行うことができるビット演算子とシフト演算子について説明しました。

C 基本講座

C言語はUNIXというOSを記述するために開発されたプログラミング言語で、組み込みシステムの開発を中心に今も使われています。このコースでは簡単なプログラムを作成しながら、C言語の基本的な文法を学びます。データ型や制御文などの基礎的な文法からポインタや構造体といったC言語の特徴的な内容まで幅広く取り上げます。よく使われる標準ライブラリ関数も数多く紹介します。

5時間45分 (60 ビデオ)
現在、カスタマーレビューはありません…
ソフトウェア・トピック
プラン加入者限定
発売日:2017年11月05日

このコースは、「オンデマンド」でご利用可能であり、ダウンロードすることもオンラインで見ることもできます。

ダウンロードすると、オフラインでコースを使用し、豊富なインターフェースをフルに活用できます。複数のデバイスを使用したり、 一度に全コースをダウンロードしたくない場合は、アカントにログインして、ストリーミング・ビデオとしてコースのレッスンを視聴してください。

ビデオトレーニングをお楽しみいただけますように! お問い合わせは、cs-jp@lynda.com宛までご連絡ください。