C语言中整数在内存中的储存形式

如题所述

无符号的整数和有符号的正整数都是用二进制原码来表示,而负整数则是使用补码来表示(补码的算法:负数的绝对值的原码安位取反再加一)。举个例子来说吧:
假设机器使用的是16位来存储整数。
10 的存在形式是0000000000001010
-10的存在形式:
(1) |-10| = 10 ,10原码为0000000000001010
(2)安位取反: 1111111111110101
(3)加1: 1111111111110110(最终结果)
温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-10-18
整数在内存中是以补码的形式存放,其中正整数的源码反码补码形式相同;负整数的原码反码补码形式不同,负数的反码:符号位不动,其余各位对原码取反,他的补码是它的反码+1.
-8
<------->
1000
0000
0000
1000
原码
-8
<------->
1111
1111
1111
0111
反码
-8
<------->
1111
1111
1111
1000
补码
第2个回答  2020-02-11
对于正数:原码、反码、补码,都一样为它本身二进制表示;
对于负数:原码为其本身二进制表示,反码相对于原码来说符号位不变其他位按位取反,补码在反码的基础上再加一。
整数在内存中以补码的形式贮存。
第3个回答  2011-01-06
无符号整数用源码,有符号的正数用源码,负数用补码
相似回答