- 无符号(unsigned)编码基于传统的二进制表示法,表示大于或者等于零的数字。
- 补码(two's-complement)编码是表示有符号整数的最常见方式,有符号整数就是可以为正或者为负的数字。
- 浮点数(floating-point)编码是表示实数的科学计数法以2为基数的版本。
信息存储
大多数计算机使用8位的块或者字节(byte)作为最小的可寻址的内存单位,而不是访问内存中单独的位。
机器级程序将内存视为一个非常大的字节数组,称为虚拟内存,内存的每个字节都由一个唯一的数字来标识,称为它的地址,所有的可能地址的集合就成为虚拟地址空间。
十六进制表示法
一个字节由8位组成,二进制表示法的值域是00000000~11111111,十进制表示法的值域是0-255。十六进制表示法的值域是00-FF。
2.1.1-1.png 2.1.1-2.png字数据大小
每台计算机都由一个字长word size,指明指针数据的标称大小。虚拟地址是以这样的字来编码的,所以字长决定的最重要的系统参数就是虚拟地址空间的最大大小。
寻址和字节顺序
- 最低有效字节在最前的方式,称为小端法little endian。
- 最高有效字节在最前的方式,称为大端法big endian。
表示字符串
表示代码
布尔代数简介
C语言中的位级运算
C语言中的逻辑运算
C语言中的位移运算
x<<k
表示x向左移动k位,丢弃最高的k位,并在右端补k个0。
x>>k
右移运算,逻辑右移或算数右移。逻辑右移在左端补齐k个0,算术右移是在左端补k个最高有效位的值。
Java中x>>k
是算术右移,x>>>k
是逻辑右移
整数表示
整型数据类型
无符号数的编码
补码编码
有符号数的计算机表示方式就是补码形式。字节的最高有效位解释为负权。最高有效位称为符号位,符号位被设置为1时,表示值为负,设置为0时,值为非负。
有符号数和无符号数之间的转换
(未完成)
C语言中的有符号数与无符号数
C语言支持所有整形数据类型的有符号和无符号运算。大多数数字都默认为是有符号的。
printf输出数值时,%d表示有符号十进制,%u表示无符号十进制,%x表示十六进制格式。
扩展一个数字的位表示
要将一个无符号数转换为一个更大的数据类型,只要简单的在表示的开头添加0,这种运算称为零扩展。
(未完成)
整数运算
(未完成)
浮点数
(未完成)
网友评论