- 字
每台计算机都有一个字长,指明指针数据的标称大小。因为虚拟地址是以这样的一个字来编码的,所以字长决定了虚拟地址空间的最大大小。也就是说,对于一个字长为w位的机器而言,虚拟地址范围是 0 ~ 2的w平方 - 1,程序最多访问 2的w平方 字节。例如32位的机器虚拟地址空间为4GB。
- 32位和64位数据类型区别
有区别的类型:(前32,后64)
(1)指针类型:4,8
(2)long类型:4,8
造成32位移植到64位出现问题的原因?
例如,32位经常用int来存储一个指针,64位就会溢出。
- 掩码
掩码是一个位模式,顾名思义,就是通过与这个掩码数值运算,掩去不需要的数值。
例如掩码0xff,与此掩码进行与运算(&),讲会得到有效的后八位。
特别的,~0 会生成一个全1的掩码,这样生成的掩码可移植性强。
- 补码
补码是一种机器存储方式。也就是说在我们看到的整数数值,在机器层面是以补码的形式存储的,补码的意义在于统一了加减法,减法也适用加法,而不需要额外的硬件。正整数的补码是自己,负整数的补码是取反加1,符号位不变。
原码
补码
举例:5
00000101 ->
00000101
-5
10000101 ->
11111011
相加:0
10001010 ->
00000000
显然,补码相加得到的是想要的结果。