第二章 信息的表示和处理

1、数字表示

Ø  无符号编码(unsigned)基于传统的二进制表示法,表示大于或者等于零的数字。

Ø  补码编码(two’s-complement)表示有符号整数,可以为正负。

Ø  浮点数编码(floating-point)表示实数的科学计数法的以2为基数版本。

计算机的表示法是用有限数量的位来对一个数字编码。当结果太大以至于不能表示时就会溢出(overflow)。

 

2、信息存储

(1)十六进制表示法

hexadecimal简写hex,以0X/0x开头

一个字节由8位组成。0---255

二进制、十六进制、十进制之间的转换。

(2)字长

指明长整数和指针数据的标称大小。每台计算机都有一个字长(word size).

计算机32位、64位。w位字长,w=32、w=64。

(3)数据大小

数据类型的准确字节数依赖于机器和编译器。

图 C语言中数字数据类型的字节(byte)数

C声明

32位机器

64位机器

char

1

1

short int

2

2

int

4

4

long int

4

8

long long int

8

8

char *(指针使用机器的全字长)

4

8

float

4

4

double

8

8

(4)寻址和字节顺序

多字节对象都被存储为连续的字节序列,对象的地址为所使用字节序列中最小的地址。

两种字节顺序:

Ø  大端法

Ø  小端法

强制类型转换(cast),大多数应用编程都强烈不推荐这种编码技巧,但对于系统级编程是非常有用的,甚至是必需的。

typedef命名数据类型,能极大地改善代码的可读性。

(5)表示字符串

C语言中,字符串被编码为一个以null字符(其值为0)结尾的字符数组

使用ASCII码作为字符码的任何系统上都将得到相同的结果,与字节顺序和字大小规则无关。文本数据比二进制数据具有更强的平台独立性。

(6)表示代码

在不同的操作系统上,不同的编码规则,二进制代码是不兼容的。

从机器的角度来看,程序仅仅是字节序列。

(7)布尔代数

或(|)、与(&)、非(~)、异或(^)

(8)C语言中的位级运算

C支持按位布尔运算

或(|)与(&)非(~)异或(^)

(9)C语言中的逻辑运算

OR(||)、AND(&&)、NOT(!)

(10)C语言中的移位运算

左移<<:x向左移K位,丢弃最高的K位,并在右端补K个0。

逻辑右移>>:x向右移K位,左端补K个0。

算术右移>>:x向右移K位,左端补K个最高有效位的值。

 

3、整数表示

 

4、整数运算

 

5、浮点数

你可能感兴趣的:(第二章 信息的表示和处理)