C的一些知识点1

计算机主要由五大设备组成:输入、输出设备,运算器,控制器,存储器(内存)。

下面模拟一下其工作过程

#include <stdio.h>

int main()

{

       int  a,b;

       scanf("%d %d",&a,&b);

       a=a+b;

       printf("%d",a);

       return 0;

}

首先scanf会阻塞,提示我们要输入内容,这就需要用到输入设备(也就是键盘),随后要执行a,b相加的操作,并且把求得的值赋给a。存储器将a,b的数据从内存中取出,放入运算器中做加法,然后再将求得的和值放回a的地址中,并且覆盖a的原有内容,最后,通过输出设备(这里是屏幕),将和值输出在屏幕上,这个过程就完成了。有人会发现没有提到控制器,的确,控制器实际上是参与每一步的,判断是否允许输入,是否允许取出数据,是否允许输出,这都需要控制器做判断。

---------------------------------------------------------------------------------------------------------------------------------------------------------

在这个分割线后我想讲讲数据在计算机中是如何存储的

存储方式有两种:定点数和浮点数

先来看看定点数,定点数又分为定点整数和定点小数,我们都知道一个字节是8个比特,也就是一个字节是八位二进制数组成的,其所能表示的最大的数就是2^8-1,255,可是如果我们想表示负数就要将最高位作为符号位,1为负,0为正。这样一个字节所能表示的最大数就是从-127---127。

定点整数,比如5,认为在编码后其最低位后是小数点,00000101.  

定点小数,比如-0.375,认为在编码后小数点在符号位和最高位之间,1.0110000 

其有自己的局限性,也就是只能编码整数,或者是绝对值小于1的小数

将浮点数前,先讲科学计数法,如果是(123.45)d=(0.12345*10^3)d

那么对于二进制而言,则有:(11.10011)b=(0.1110011*10^{10})b

浮点数就是采用二进制的科学计数法对其进行编码的,有两部分组成,前半部分叫阶码(决定了数据的范围),后半部分叫尾数(决定了数据的精度),就上面的例子,我们认为第一个字节存放阶码,后三个字节存放尾数,

则有:00000010   01110011 00000000 00000000

猜你喜欢

转载自blog.csdn.net/weixin_41556394/article/details/81270802