× [PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。 |
Java の int型 は符号付 32bit だから・・・
int i = (1 << 31) は i = -2,147,483,648 である さらに -1 ってことは・・・ 実行結果は i = 2,147,483,647 正の数になってる・・・ 16進数で考えると int i = (1 << 31) は i = 0x80000000 だし・・・ -1 は2の補数で 0xFFFFFFFF だから・・・ 和を取ると最上位ビットが桁あふれして・・・ i = 0x7FFFFFFF となるから・・・ i = 2,147,483,647 となるのか でも感覚的には・・・ int i = ~(1 << 31) のように シフト演算の後1の補数(ビット反転)にした方が・・・ でも簡単な演算の場合 シフト演算より四則演算の方が速い・・・って 聞いたこともあるから・・・ どっちがいいのだろ??? PR |
|
トラックバックURL |
忍者ブログ [PR] |