C语言 | 关于数据在计算机的存储形式
接上篇:详解C语言中,关于0的不同含义

上次我们说到0经过位运算符~,按位取反之后,得到的结果是-1。以下呢就给大家具体的讲解数据在计算机的存储形式。

数据在计算机中都是以二进制的形式进行存储的。
例如:十进制数320转换成二进制数:
320 = 1*2^8+1*2^6 = 0000 0001 0100 0000

(第一个问题:)
那么我们就会遇到在数据存储中的第一个问题,负数怎么表示呢?
在基本数据类型中,我们又将数据分为有符号型和无符号型。无符号型很好理解,也就是可以直接表示正整数,并且只能存储正整数。有符号型的数据,将最高位设为符号位,当最高位是0的时候,表示存储的是一个正数,最高位1的时候,表示存储的就是一个负数。

例如:一个八位的长度的数据

0000 0001 = +1;
1000 0001 = -1;
现在知道了数据的表示方式,我们再来看看数据的运算。在计算机中,没有减法运算,那么1-1对于计算机而言就是1+(-1)。我们来看一下根据计算机的存储方式,来进行运算:
0000 0001 + 1000 0001 = 1000 0010 = -2;

我们可以看到1-1经过刚刚的计算之后得到了-2的结果,难道是我们平常的认知出现问题啦?
当然不是,而是在计算机中数据虽然是以二进制的形式进行存储,但数据并不是以原码的形式进行存储的,而是以补码的形式存在于内存中。

更多知识点我们下次继续,未完待续......