ANSI C读书笔记系列之字符集篇----第一章 位 字节 字符

ANSI C 3.3节有关于位bit的定义:

The unit of data storage in the execution environment large enough to hold an object that may have one of two values. It need not be possible to express the address of each individual bit of an object.

位运算有:&按位与,|按位或,^按位异或,~取反,<<左移,>>右移.

在C中自然没有类似于bit类型,它可以通过位段来定义实现类似的功能.如:

struct data{

    unsigned int a:3;

    unsigned int b:5;

    unsigned int c:2;

}

三个位段占2个字节(多余6位).定义位段必须用unsigned int或int类型.有的C编译系统只允许用unsigned int型.

对位段引用:x.a,x.b,x.c. 允许对位段赋值,但不能超过该位段能存储的最大值,如占3位a的最大值为7,占2位的c的最大值为3.

位不要求支持取地址操作.可以如p=&x取得结构体地址,但不能如p=&x.a引用位段的地址.

 

ANSI C 3.4节有关字节byte的定义:

The unit of data storage large enough to hold any member of the basic character set of the execution environment. It shall be possible to express the address of each individual byte of an object uniquely. A byte is composed of a contiguous sequence of bits, the number of which is implementation-defined.

要求对象中的每个字节可寻址.字节由一系列相邻的二进制位组成,字节包含的位由实现定义.字节通常被作为计算机信息计量单位.

微型计算机一般1个字节包含8个位,很多人一直都有这个疑问:"为什么一个字节是8位"?

这个问题很象"为什么一打是12个"一样,所以简单的答案就是,这是历史形成的.

那历史为什么没选择1个字节是6位或者10位呢?这是因为历史上最早有那么一群人认为他们用8个可以开合的晶体管来组合成不同的状态就可以表示世界上的万物.说到这,你一定想到了ASCII码了.我认为也是如此,那最早应该是7位更合理啊?选8位估计是预留一位让这群人更放心而且8是2的幂次方的缘故了.

当然,现在我们知道,8位肯定不能表示世上万物了,所以字节只能是构成信息的基本单位了,我们需要多个字节来更好的表现世界. 

ANSI C 3.5 节有关字符character的定义:                                                                  

A bit representation that fits in a byte. The representation of each member of the basic character set in both the source and execution environments shall fit in a byte.

字符是一个字节内能容纳的二进制表示.源环境和执行环境的基本字符集中的每个成员的表示都应能被容纳在一个字节内.

字符是可使用多种不同字符方案(编码)来表示的抽象实体.这里的字符定义是用一个字节编码实现,字符同样也有多个字节编码来实现的.ANSI C 3.13节另外定义了多字节字符multibyte character.

 A sequence of one or more bytes representing a member of the extended character set of either the source or the execution environment. The extended character set is a superset of the basic character set.

多字节字符是由一个或多个字节构成的序列,表示源环境和执行环境的扩展字符集的一个成员.扩展字符集是基本字符集的超集.

字符是指计算机中使用的字母,数字,字和符号等.一组抽象字符的集合就是字符集.

字符集常常和一种具体的语言文字对应起来,该文字中的所有字符或者大部分常用字符就构成了该文字的字符集,比如英文字符集,汉字字符集.

所以,基于字符集可以存储并表现出现实世界.计算机要处理各种字符,就需要将字符和二进制内码对应起来,这种对应关系就是字符编码.编码其实也就是前面提到的如何用几位表示世上万物的问题了.

发布了38 篇原创文章 · 获赞 10 · 访问量 17万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章