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 | ^ | ビット排他的論理和 |
| 左シフト | << | ビット左シフト |
| 右シフト | >> | ビット右シフト |
これに加え、このような演算子には、自己代入型の、 *=,/=,&=,|=,<<=,>>= などの紹介も行う。