« Sleipnirで文字化け | メイン | 夢を見たらしい »

2005年11月30日

算術シフトと論理シフト

シフト演算には、あいたビットに0をうめる論理シフトと、シフトする前のそのビットの値をうめる算術シフトがある。
C言語でシフト演算といえば「>>」とか「<<」だが、コンパイラによっては、同じシフト演算子でも、論理シフトと算術シフトを区別してくれるらしい。
char型の変数でシフト演算をすると算術シフトに、unsigned char型の変数でシフト演算をすると論理シフトに、それぞれ勝手にしてくれるらしい。
便利なんだか不便なんだか・・・まあ勝手にあいたところに0が埋まる、と思い込むのがよくないわけだけど。

投稿者 akita : 2005年11月30日 12:11

トラックバック

このエントリーのトラックバックURL:
http://akita11.jp/mt/mt-tb.cgi/367

コメント

コメントしてください




保存しますか?

(書式を変更するような一部のHTMLタグを使うことができます)