[求助]关于整形int在内存中的是如何保存的?
有这么一个题:
main()
{ int a=-521;
printf("%u",a);
}
运行的结果是65015。答案分析说-521在内存中保存为1111 1101 1111 0111,将这个二进制转化为无符号整数刚好就是65015。
我想问的是红字的部分怎么解释?请高手指点!!
有这么一个题:
main()
{ int a=-521;
printf("%u",a);
}
运行的结果是65015。答案分析说-521在内存中保存为1111 1101 1111 0111,将这个二进制转化为无符号整数刚好就是65015。
我想问的是红字的部分怎么解释?请高手指点!!
<计算机基础>指出,对于16位即short int,
-521在内存中保存为1111 1101 1111 0111
这是“补码”表示法所决定的。最左边那个1
代表“负号”。记忆的方法是:
对于 short int 而言:
无符号数与带符号数在 0~32767 范围内表达方式是完全一样的。
然而,带符号数 -32768~-1的表达方式
竟然与无符号数 32768~65535 对应相同
于是发现下列公式:
负整数的补码=(该数+65536)的无符号表示
有这么一个题:
main()
{ int a=-521;
printf("%u",a);
}
运行的结果是65015。答案分析说-521在内存中保存为1111 1101 1111 0111,将这个二进制转化为无符号整数刚好就是65015。
我想问的是红字的部分怎么解释?请高手指点!!
int 类型整数在计算机内部存储为:最高位是符号位:0表示正,1表示负;
负数以补码形式存储
....10 0000 0000 是512
1000 是 8
1 是 1
相加就是521 诶..这个算法不错..我以前怎么没见到过..到现在我还用乘的呢~
那 10进制 变回2进制是不是 也这么变啊..?
求教..求教....