int数字的表示

在计算机中int型数字使用补码的形式在存储。
首先说明补码的计算方式。
正数和零的补码就是他们本身。
负数的补码是符号位(最高位)不变,其他位取反的结果+1。
例如
1的补码为1
0的补码为0
-1的原码为
10000000_00000000_00000000_00000001
取反码
11111111_11111111_11111111_11111110
补码为反码加1
11111111_11111111_11111111_11111111
可以看到下面的程序

#include 
using namespace std;
int main(void) {
    int i = 1;
    cout<

函数形式为:从小到大,然后突然跳变,最后又从小到大
0->0x7fffffff->0x80000000->0xffffffff
0->2147483647->-2147483648->-1

可知对一个数取负的过程为
1
0x00000001
-1
0xfffffffff
首先改变符号位
0x10000001
然后取补码
0xffffffff

有没有更为方便的方法呢?全部取反然后加一即可。

你可能感兴趣的:(int数字的表示)