变量在计算机内存储的到底是什么?是以什么样的形式存储在内存中的?
一直以来我都有一个疑问,char b[2] = {-10,10};
b[0],b[1]在内存中存放的数据是什么样的?我知道计算机内部只认识二进制,最高位为符号位,代表:正负;
那么我很容易猜想很可能会是如下存储方式的:
-10:10001010 10: 00001010;
但是真的会是这样吗?(活了20多年了,让我明白一点:生活往往不会如我想想的那样的,于是我乎,我要来验证他)
程序1:
通过vs2010,在Debug下打开内存窗口,调试程序(1)发现真正存储在内存的数据是
(f6,0a)这是16进制,转成二进制(11110110 , 0000 1010);我发现10的存储数据我猜对了,但是-10的却错了!
认真想想,这是怎么回事?…..
….
记得以前在《数字逻辑》里学过”原码”,”反码” , “补码”;(其实我们的猜想就是原码)
然后再看看1111 0110-----这不正是-10的补码吗?
难道计算机是以补码的形式存储数据的?
多试几个数据,我靠,我发现真的是这样子的;计算机内部存储的是数据的补码!
那为什么,要使用补码呢?为什么不用”原码”,原码对于我们人来说,不是更好理解吗!
计算机为什么使用补码来存储数据:http://blog.csdn.net/jiese1990/article/details/8209178