ホーム » スタッフ » 斉藤徹 » 2進数の扱いとビット演算

2009年6月
« 5月   7月 »
 123456
78910111213
14151617181920
21222324252627
282930  

最近の投稿(電子情報)

アーカイブ

カテゴリー

2進数の扱いとビット演算

N進数の話が大体終わったけど、計算機構成論の内容にも関連するということで、 2進数演算・ビット演算の演算子の説明と、2進数を用いた乗算処理を説明する。

int mul( int x , int y ) {
int s = 0 ;
while( y != 0 ) {
if ( y % 2 != 0 )
s += x ;
y /= 2 ;
x *= 2 ;
}
}
void main() {
printf( "%d\n" , mul( 11 , 10 ) ) ;
}

この関数を示し、計算結果を予想してもらい、その後でこの計算が、 2進数による乗算であることを示し、この考え方を計算機構成論の 乗算回路あたりで習うであろうことを説明する。

     1011
x)1010
------
0000
10110
000000
+)1011000
---------
1101110)2 = 110)10

ビット演算子

乗算の説明の後、2での割り算や乗算がビットシフトであることの説明をして、 この結果を踏まえ、<<>>,^,~などの演算子を説明する。

AND & ビット論理積
OR | ビット論理和
EXOR ^ ビット排他的論理和
左シフト << ビット左シフト
右シフト >> ビット右シフト

これに加え、このような演算子には、自己代入型の、 *=,/=,&=,|=,<<=,>>= などの紹介も行う。