2015年7月27日 星期一

為何int的負數會比正數多1

因為C語言中做了一個規定
當最高位的bit為1而其他都為0的時候,這個1既表示負號又表示它的數值。
以32bit為例,有號數的int範圍為
正: 2147483647 ~ 0  負: -1 ~ -2147483648

如此定義有二個好處,
一是計算方便,當你用2的補數往上做加法時,可以直接依二進制計算,不用另外調整正負號。
二是避免重覆定義0, 因為+0跟-0是同一個數,不需要分正負。

沒有留言:

張貼留言