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

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

计算机存储的原理

二进制、八进制、十六进制是计算机中常用的存储方式,其中多少进制就是逢多少进一位。
二进制:由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得到键盘输入的变量值,这个是需要进一步了解的。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,723评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,485评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,998评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,323评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,355评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,079评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,389评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,019评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,519评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,971评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,100评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,738评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,293评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,289评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,517评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,547评论 2 354
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,834评论 2 345

推荐阅读更多精彩内容

  • 1、标识符 什么事标识符呢?变量的名字就是标识符。不仅限于变量名,程序中各种元素的名字,都属于标识符。例如符号常量...
    滕王阁序阅读 896评论 0 0
  • •1 C语言程序的结构认识 用一个简单的c程序例子,介绍c语言的基本构成、格式、以及良好的书写风格,使读者对c语...
    CONLYOUC阅读 8,696评论 9 66
  • 20180308(43/60) 【幸福实修目标】觉知去感悟每时每事每人,带着过去,立足于现在,朝向未来,我可以做些...
    你谢谢阅读 170评论 0 1
  • 相同:都是内存空间的一部分 异: (1)分配;堆是由程序员自己分配的(new或者malloc),而栈是由系统自动分...
    冰吉凌阅读 3,069评论 0 15