エンジニア実践的基礎: ビット操作
背景
このシリーズでは、エンジニアとして7年目を迎える節目に、これまで蓄積した知識を整理し、共有します。すべての記事を読めば、ミドルエンジニアとしてのスキルを身につけることができます。コンピュータサイエンスの理論よりも、実践的なソフトウェアエンジニアリングの知識に焦点を当てています。コーディングインタビューにも役立つ内容です。データ構造とアルゴリズムから設計、要件定義、バージョン管理、アジャイルなチーム開発、データベース、ネットワークなど、幅広いテーマを扱います。要するに、仕事に困らないレベルの知識を網羅します。
ビット操作とは?
ビット操作はアルゴリズムというより数学です。難しそうに感じますが、ルールは単純です。
ビットとは 0 と 1 のことです。あらゆる情報は 0 と 1 の組み合わせで表現できます。そして 0 と 1 の組み合わせを高速に処理できるものがコンピュータです。ビット操作は、コンピュータが情報を処理する際の基本的な操作単位であり、コンピュータの動作原理を理解する上で重要です。ビット操作は次の5つあります。
AND
OR
XOR
否定
シフト
左にシフトすると2倍になり、右にシフトすると2分の1になります。ビットは2進法ですが普段使い慣れている10進法で説明します。3という数字が与えられて、左シフトすると 30 になります。これは3を10倍した数字です。逆に右シフトすると30が3になります。これは10を10分の1した数字です。
10進法
左シフト: 10倍
右シフト: 10分の1
2進法
左シフト: 2倍
右シフト: 2分の1
2進法を10進法に変換するには、各桁に 2^(各桁数-1) をかけて足します。
逆に10進法を2進法に変換するには、商が0になるまで2で割り続けて、余りを逆に並べます。