1.三种数字表示
无符号:基于传统二进制表示法,表示大于或者等于零的数字。
补码:表示有符号整数的最常见方式
浮点数:表示实数的科学计数法的以二为基数的版本。
2.信息存储
(1)字长
机器级程序将存储器视为一个非常大的字节数组,称为虚拟存储器。存储器的每个字节都能由唯一的数字来标识,称为地址。字长用来指明整数和指针数据的标称大小,虚拟地址空间的大小由字长决定,对于一个字长为w位的机器而言,虚拟地址的范围为0-2^w-1。
(2)数据大小
程序可移植性的要求是使程序对不同数据类型的确切大小不敏感
(3)寻址和字节顺序
多字节对象被存储为连续的字节序列,对象的地址为所使用字节中最小的地址
最低有效字节在最前面的方式称为小端法
最高有效字节在最前面的方式称为大端法。
(小端法:高对高,低对低。大端法:高对低,低对高。)
字节顺序可见的三种情况:
a.网络应用程序代码编写时必须遵循已建立的关于字节顺序的规则
b.反汇编器显示(确定可执行文件所表示的指令序列的工具)
(4)表示字符串
ASCⅡ字符码
a-z的ASC||码为0x61-0x7A。
(5)布尔代数
二进制值是计算机编码、存储、操作信息的核心(0、1)
逻辑运算——0或1
位运算————位向量
~=NOT
&=AND
|=OR
^=异或
7.布尔代数
二进制值是计算机编码、存储、操作信息的核心(0、1)
逻辑运算——0或1
位运算————位向量
~=NOT
&=AND
|=OR
^=异或
3.整数表示
(1)整形数据类型
表示有限范围的整数。
要用C99中的“long long”类型,编译是要用 gcc -std=c99
(2)补码编码
(3)有符号数和无符号数之间的转换
(4)扩展数字的位表示
一种常见的运算是在不同字长的整数之间转换,同时又保持数值不变。
- 零扩展:将一个无符号数转换为一个更大的数据类型,只需要简单地在表示的开头添加0。
- 符号扩展:将一个补码数字转换为一个更大的数据类型,规则是在表示中添 加最高有效位的值的副本。由此可知,如果原始值的位表示为[xw-1,xw-2,…,x0],那么扩展后的表示就为[xw-1,…,xw-1,xw-1,xw-2,…,x0]。
截断数字