星期六, 12月 02, 2006

資料儲存

上課時老師提及一個有趣的程式

#include <stdio.h>
#include <stdlib.h>
int main(){
int n=0x1234;
char *s = (char*)&n;
for(unsigned int i=0;i<4;i++){
printf("%02x ",s[i]);
}
system("pause");
}

這個程式有趣之處是所印出來的答案是 34 12 00 00 ,喔,跟我預先想的00 00 12 34是不一樣的,事實上,儲存方法沒有好壞,只是在管線設計時的傳輸資料的不同處,這就見仁見智了,這個程式在x86的電腦跑起來應該都是一樣的答案,但是在大型電腦或者是mac,我就不知道了。

2 則留言:

Josh Ko 提到...

這是 little-endian vs. big-endian 的問題吧 XD。Mac(PowerPC)是 big-endian XD。

yen3 提到...

哈哈哈,老師那時候說,大型主機,像IBM是big-endian,想不到Mac也是XD