计算机存储原理及C语言变量

2018-03-12  本文已影响0人  排骨炖豆角不要豆角

计算机的基础当然是变量在其中的应用,这样会将计算过程变的简单,也会为每个计算的单元提供指向性,每种语言都离不开变量的帮忙。

计算机存储的原理

二进制、八进制、十六进制是计算机中常用的存储方式,其中多少进制就是逢多少进一位。
二进制:由0和1表示的数字,逢2进1.
八进制:由0-7表示的数字,逢8进1.
十六进制:由0-9和A-F,共16个数表示的数字,逢16进1.

英文占一个字节

目前,计算机的存储是以二进制为主的。通常,一个字节(byte)由8位构成(8bit),一个字节可存储的最大的量是(11111111)2=255。所以,26个英文字母的大小写(共52个)使用一个字节就能够完全表达。

中文占两个字节

对于中文而言,一个字节所能产生的255个数字,远少于中文的汉字数,所以计算机科学家们使用两个字节存储汉字,两个字节能存储(1111111111111111)2=65535个量,这就满足了汉语的要求。

综上,可以实现一下手动的计算功能了:

1 byte=8 bits
1Kb=1024 byte=210 bytes
1Gb=1024Mb=1024*1024Kb=10243 bytes

那么1Gb可以存储多少汉字呢?

计算方法为: 1Gb=10243/2,由此可见这是非常大的量。

C语言变量类型介绍

C语言的变量类型主要包括以下几个方面:

整数类型

整数是正无穷到负无穷,但C中分为短整型(16位)普通整形(32位)长整型(64位)
使用下面例子测试:

#include <stdio.h>
void main(void)
{
        int x=4294967296;
        printf("%d\n",x);
}

编译不能通过,报错为:
In function ‘main’:
 warning: overflow in implicit constant conversion [-Woverflow]
  int x=4294967296;

发现上面的错误是溢出,无法实现输出的printf功能,这也是符合计算机规则;删除末尾的数字6,程序运行正常,无错误。

** notes: 整数分为有符合和无符号,这个需要在仔细查看下。

实数类型

实数中包括浮点数、科学技术法等,科学技术法里面包含尾数、基数、指数。
浮点数分为单精度(float)和双精度(double),具体信息如下:

类型 存储字节 最小值 最大值
float 4位 ~1.79e-308 ~1.79e308
double 8位 ~3.4e-38 ~3.4e38

字符类型

英文键盘上的符号均可以ASCII对应,ASCII码中对应的需要一个字节。使用关键字 char 来声明字符变量

char c="c";
printf("c=%d\n",c);

输出结果为:
c=99

** notes:字符型数据也存在正负,系统不同,出现的情况也可能不一样,有些系统为singed,有的则为unsigned。

常量

常量分为符号常量、直接常量和字符常量等,实际应用中,比如PI 值,,使用PI 则为符号常量,可以通过下面的方法进行定义:

#include <stdio.h>
#define  PI  3.14   /* 这步是定义PI值为3.14,以便于进行下面的计算*/
void main(void)
{
  float r=2.0;
  float dd=2*PI*r;
  printf("%.2f\n",dd);
}

编译运行,结果为12.56.

** notes: #define后面不要添加分号,这是错误的做法。此外,常量符号一般选择使用的是大写的形式。

定义的变量

变量声明主要使用的是:

(1)  int  x1  x2;
(2)  int  x1,
     x2;
(3)  char ch;
(4)  double d_yes;

变量是计算的开始,注意相同的变量名在使用的时候不要出现打错字的情况。

变量初始赋值

对于每个变量,只是声称还是不够的,这样并不会为它分配内存,只有赋值操作使这个变量有了初始值才能真正访问这个变量。比如int x=3,具体的计算机的过程如下:
(1)分配变量名;
(2)为变量名分配字节块;
(3)关联内存块和变量名;
(4)运行这个语句,将初始值赋给这个变量。

同时检测了一下 &变量名的输出什么?

#include <stdio.h>

void main(void)
{
  int x=10;
  printf("%d\n",&x);
}
输出为:571675020

这说明printf("%d\n",&x);这个语句只是打印x的变量在内存的存储地址而已,并不是变量本身。可以使用scanf函数与&x得到键盘输入的变量值,这个是需要进一步了解的。

上一篇下一篇

猜你喜欢

热点阅读