本篇文章分享了本人对该知识点的认识,内容如果有误,还请各路大佬多多指点。
一、数据的存储
数据的存储需要经历以下几个步骤:
1.对应的数据
2.原码
3.补码
但是在了解该内容之前我们需要补充几个知识点:
1字节=8比特位
一个比特位相当于一个二进制的单位
如:0000 0001就是8个比特位
在我们定义数据的类型时,会向电脑申请一块空间来存储该数据。
如int类型:
int a = 3;
int会向电脑申请4个字节的空间来存放3这个数据,每个不同的数据类型申请的空间都是不同的。
以下给出各个数据类型所申请的空间,需要的可以自取:
接下来我们正式开始讲解存储。
举一个例子,如
char a = 1;
我们要把3存储到电脑中就需要把3从十进制转化为二进制
3的二进制为11,
但是我们在char向电脑中申请了1个字节的空间(char申请空间的大小请查看上表)。
并且原码就是将3转化为二进制的形式,
所以3的原码为:
0000 0011
接下来进入正题
对于补码我们只需要知道,
正数的补码也就是正数自身的原码。
也就是说3的补码就是
0000 0011
而负数的补码则需要将负数的原码转化为反码再加1。
举个例子:
char a = -3;
所以-3的原码是什么呢?
在这里我们需要再补充一个知识点:
第一个(从左往右)比特位通常不用来存储数据
(也可以让它存储数据,但是在这里就不再扩展了),
当第一位为0时,则该数为正数,
第一位为1时,则为负数。
比如3的原码为
0000 0011
所以-3的原码为
1000 0011
反码也就是将1变成0,0变成1(符号位不变,也就是第一位不变),
所以-3原码的反码为
1111 1100
这个时候再对其进行加1
-3的补码也就是
1111 1101
反码的加1也就像普通的加减一样,不过这里是二进制的加1。
所以遵循二进制的规则——满二进一
如
0000 0001
加1后因为满2了,所以需要向前进一位为:
0000 0010
数据是以补码的形式储存在电脑中
以上内容就是关于数据的存储,如果看不懂的话可以多看几次
接下来讲解数据是如何输出的。
二、数据的输出
数据的输出需要经历以下几个步骤
1.补码
2.原码
3.转化为对应的数据
以下涉及的知识点前面已经有提到过了,此处便不再补充。
我们依旧再举个例子
正数的输出
如:
3的补码为
0000 0011
将其转化为原码为
0000 0011
再将原码从二进制转化为十进制的3进行输出。
这是关于正数的输出,
而关于负数的输出,
如-3的原码为:
1111 1101
将其转化为反码为:(此处减1,与负数的反码转化为补码的加1相反)
1111 1100
再将反码转化为原码:
1000 0011
在输出数据时,电脑会对该原码的第一个比特位(从左往右)进行检测,
如果为1则会在输出的数据前加-(负号),
如果为0时则直接输出该数据。
所以接下来在将该原码从二进制转化为十进制进行输出。
以上就是负数的输出。
到这里我们可以与前文串联,形成一个完整的存储与输出的过程,让自己的思路变的清晰些。
本篇文章到这里就结束了,如果对你有帮助,可以支持一下我。
内容如果有错误还请大佬更正。
在此希望各位可以成为C语言的大佬!