虚拟地址空间:
大多数 Intel 兼容机采用小端模式,IBM 和 Sun 公司的机器大多数机器采用大端法。
对于很多新的处理器,支持双端法,可以配置成大端或者小端运行。例如基于 ARM
架构的处理器,支持双端法,但是 Android 系统和 iOS 系统却只能运行在小端模式.
下面是代码测试,获取16进制表示:
#include <stdio.h>
#把指针看成指向一个字节的序列,而不是对象的原始数据类型
typedef unsigned char * byte_pointer ;
void show_bytes ( byte_pointer start, int len){int i;cout<<len<<endl;for(i = 0; i < len; i++){// cout<<"==start[i]:"<<start[i]<<endl;printf ( "%.2x " , start[i]);}printf ("\n");
}void show_int (int x){show_bytes ((byte_pointer) &x, sizeof (x));
}
int main()
{show_int(15);return 0;
}
在linux 64位intel cpu上运行可以看出是小端法表示.
逻辑/算术左右移:
当数字不带符号时,右移是左边补零,也就是采用逻辑右移;
当数字带符号时,右移是左边补1,也就是采用算术右移;
【合集】CSAPP-深入理解计算机系统_哔哩哔哩_bilibili