日常の戯言とかなんとか

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
-------- : スポンサー広告 :
Pagetop

オーバーフローの処理

-2147483648を2進で表すと1000~(全部で0が31個 以降は面倒くさいから1000で考える)なんだよな

こいつの符号を反転させるには2の補数を取るからビットを反転させて1を足す
すると
1000→0111(ビット反転)→1000(+1)
となって元の数に戻ってしまうわけだ

んで補数を元の数に足すのが減算の処理なんだから
元のLifeを0001とするとlifeadd後のlifeは
0001 + 1000 = 1001
となる

この1001ってのは負の数
符号付き4ビットでいうところの-7
最終的にlifeが0以下になったら死ぬから-7にしたら当然死ぬ


ちゃんと32ビットでLifeを1000としても同様に
       1000 = 0b 00000000000000000000001111101000
-2147483648 = 0b 10000000000000000000000000000000
           = 0b 10000000000000000000001111101000
           = -2147482648
こういうことなんじゃないかね

スポンサーサイト
2013-06-26 : 雑記 : コメント : 0 : トラックバック : 0
Pagetop
コメントの投稿
非公開コメント

Pagetop
« next  ホーム  prev »

プロフィール

@ひたち

Author:@ひたち
「@」を忘れるべからず
読みは普通に「ひたち」でいいんじゃないの

検索フォーム

アクセスカウンター

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。