2018年10月

二进制数、位和字节

  • 我们人类常用的十进制数是基于10的幂,计算机适用基底为2的数制系统。
  • 以2为基底表示的数字被称为二进制数。二进制中的2和十进制中的10作用相同。
  • 用二进制系统可以把任意整数(如果有足够的位)表示为0和1的组合。
  • 由于数字计算机通过关闭和打开状态的组合来表示信息,这两种状态分别用0和1来表示,所以使用这套数制系统非常方便。

  1. 二进制整数

    • 通常,1字节包含8位。C语言用字节表示存储系统字符集所需的大小。
    • 可以从左往右给这8位分别编号7~0。在1字节中,编号是7的位被称为高阶位,编号是0的位被称为低阶位。每一位的编号对应2的相应指数。
    • 1字节可存储0~255范围内的数字,总共256个值。或者,通过不同方式的位组合,程序可以用1字节存储-128~+127范围内的整数,总共还是256个值。

- 阅读剩余部分 -

示例程序

  • C提供了结构变量提高你表示数据的能力,它能让你创造新的形式。
  • 结构的每个部分都称为成员字段
  • 使用结构的3个技巧:

    • 为结构建立一个格式或样式;
    • 声明一个适合该样式的变量;
    • 访问结构变量的各个部分。

建立结构声明

struct book
{
    char title[MAXTITL];
    char author[MAXAUTL];
    float value;
};

- 阅读剩余部分 -

与文件通信

  1. 文件是什么
    文件通常是在磁盘或固态硬盘上的一段已命名存储区。C把文件看作是一系列连续的字节,每个字节都能被单独读取。由于某些环境中可能无法完全对应这个模型,C提供两种文件模式:文本模式二进制模式
  2. 文本模式和二进制模式
    首先要区分文本内容二进制内容文本文件格式二进制格式、以及文件的文本模式二进制模式

    • 所有文件的内容都以二进制形式(0或1)存储。

      • 如果文件最初使用二进制编码的字符(如ASCII或Unicode)表示文本;该文件是文本文件,其中包含文本内容
      • 如果文件中的二进制值代表机器语言代码或数值数据或图片或音乐编码,该文件就是二进制文件,其中包含二进制内容
    • Unix用同一种文件格式(文本和二进制是同一种格式)处理文本文件和二进制文件的内容。

      • C和Unix在文本中都使用\n(换行符)表示换行,程序可使用Unix目录中统计文件大小的计数来确定是否读到文件结尾;
      • OS X Macintosh文件用\r(回车符)表示新的一行;
      • MS-DOS文件用\r\n组合表示新的一行,用嵌入的Ctrl+Z字符表示文件结尾。
    • C提供两种访问文件的途径:二进制模式文本模式

      • 在二进制模式中,程序可以访问文件的每个字节。
      • 在文本模式中,程序所见的内容和文件的实际内容不同。程序会在读取文件时将本地环境的模式转换成C模式以便处理(如上面的换行标识符),反之写入文件时会将C模式转换回本地环境的模式。除了文本模式还能以二进制模式读写文本文件,其不会发生上述转换,显示文件实际内容。


- 阅读剩余部分 -

存储类别

C提供了多种不同的模型或存储类别在内存中存储数据:

  • 从硬件方面看,被存储的每个值都占用一定的物理内存,C语言把这样的一块内存称为对象
  • 从软件方面看,程序需要一种方法访问对象。这可以通过声明变量来完成,变量名就是标识符,标识符可以用来指定特定对象的内容。标识符即是软件(即C程序)指定硬件内存的对象的方式。
  • 变量名不是指定对象的唯一途径,例如指针也同样可以指定对象(这里是说解引用的指针,指针本身指定的是一个存储地址的对象)。
  • 一般而言,那些指定对象的表达式被称为左值。所有示例表明,如果可以使用左值改变对象中的值,该左值就是一个可修改的左值
  • 数组是对象,数组的每个元素也是对象。
  • 可以用存储期描述对象,所谓存储期是指对象在内存中保留了多长时间。
  • 标识符用于访问对象,可以用作用域链接描述标识符,标识符的作用域和链接表明了程序的哪些部分可以使用它。
  • 不同的存储类别具有不同的存储期、作用域和链接。

- 阅读剩余部分 -