计算机操作系统寻址,计算机操作系统-寻址和字节顺序
基本上在所有的機器上,多字節對象都被存儲為連續的字節序列,對象的地址為所使用字節中最小的地址。假設一個int 變量x的地址為0x100,那么(假設int 為32位表示)x的4個字節被存儲在內存 0x100、0x101、0x102、0x103 的位置。在某些機器中選擇在內存中按照從低有效字節到高有效字節的順序存儲對象,而另一些機器按照從最高有效字節從最低有效字節存儲。最低有效字節在前的方式稱為小端法,最高有效字節在前稱為大端法。
假設變量x的類型為 int ,位于0x100 處,它的十六進制為 0x01234567 地址范圍 0x100~0x103 的字節順序按照大小端法 為如下表示:
注意: 在 字 0x01234567 中,高位字節16進制為 0x01 ,低位字節16進制為0x67。
大多數的intel兼容機都只用小端模式,一般的在linux 和windows 都是小端法。
檢驗字節序可使用如下 c語言代碼,linux 下可以執行:
gcc -o show_bytes show_bytes.c
./show_bytes
打印字節序代碼如下:
#include
typedef unsigned char *byte_pointer;
void show_bytes(byte_pointer start,size_t len){
size_t i;
for (int i = 0; i
printf("%.2x",start[i]);
}
printf("\n");
}
void show_int(int x){
show_bytes((byte_pointer) &x,sizeof(int));
}
void show_float(float x){
show_bytes((byte_pointer) &x,sizeof(float));
}
void show_pointer(void *x){
show_bytes((byte_pointer) &x,sizeof(void *));
}
void test_show_bytes(int val){
int ival=val;
float fval=(float) val;
int *pval=&ival;
show_int(ival);
show_float(fval);
show_pointer(pval);
}
int main(){
test_show_bytes(12345);
return 0;
}
華裳繞指柔, 版權所有丨如未注明 , 均為原創|轉載請注明計算機操作系統-尋址和字節順序!
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的计算机操作系统寻址,计算机操作系统-寻址和字节顺序的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 苹果移动版和公开版的区别
- 下一篇: 计算机指令系统课件,计算机组成原理课件0