忍者ブログ
[PR]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

【2024年03月28日18:48 】 |
Java で int i = (1 << 31) - 1 ・・・
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
【2006年10月22日14:18 】 | Java | コメント(0) | トラックバック()
<<あんごう・・・ | ホーム |ウィルス対策・・・>>
コメント
コメントの投稿













トラックバック
トラックバックURL

前ページ| ホーム |次ページ

忍者ブログ [PR]