日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java. 端序_c代码测试本机处理器的端序

發布時間:2023/12/15 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java. 端序_c代码测试本机处理器的端序 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1、端序簡介(維基百科):

端序(Endianness),又稱字節序、尾序。在計算機科學領域中,端序是指存放多字節數據的字節(byte)的順序,典型的情況是整數在內存中的存放方式和網絡傳輸的傳輸順序。Endianness有時候也可以用指位序(bit)。

對于單一的字節(a byte),大部分處理器以相同的順序處理位元(bit),因此單字節的存放方法和傳輸方式一般相同。

對于多字節數據,如整數(32位機中一般占4字節),在不同的處理器的存放方式主要有兩種,以內存中0x0A0B0C0D的存放方式為例,分別有以下幾種方式:

1)大端序(英:big-endian)或稱大尾序。

數據以8bit為單位:

地址增長方向??→

...

0x0A

0x0B

0x0C

0x0D

...

示例中,最高有效位(MSB, Most Significant Byte)是0x0A?存儲在最低的內存地址處。下一個字節0x0B存在后面的地址處。正類似于十六進制字節從左到右的閱讀順序。

數據以16bit為單位:

地址增長方向??→

...

0x0A0B

0x0C0D

...

最高的16bit單元0x0A0B存儲在低位。

2)小端序(英:little-endian)或稱小尾序。

數據以8bit為單位:

地址增長方向??→

...

0x0D

0x0C

0x0B

0x0A

...

最低有效位(LSB,Least Significant Byte)是0x0D?存儲在最低的內存地址處。后面字節依次存在后面的地址處。

數據以16bit為單位:

地址增長方向??→

...

0x0DOC

0x0BOA

...

最低的16bit單元0xOD0C存儲在低位。

3)混合序(英:middle-endian)具有更復雜的順序。

以PDP-11為例,0x0A0B0C0D被存儲為:

32bit在PDP-11的存儲方式

地址增長方向??→

...

0x0B

0x0A

0x0D

0x0C

...

可以看作最高的16bit位和低位以大端序存儲,但16bit內部以小端存儲。

2、代碼實現:

測試思想主要是應用c語言的指針,以浮點數125.5為例,浮點數的在內存的存儲方式可參看博文:

float型數據125.5轉換為標準浮點格式:0 10000101 11110110000000000000000

則在內存中存放方式為:

1)小端

00000000?? 低地址

00000000

11111011

01000010?? 高地址

2)大端

00000000?? 高地址

00000000

11111011

01000010?? 低地址

代碼如下:

#include

int main(int argc, char *argv[])

{

float a=125.5;

char *p=(char *)&a;

printf("%d ",*p);

printf("%d ",*(p+1));

printf("%d ",*(p+2));

printf("%d\n",*(p+3));

return 0;

}

如果是小端,則結果: 0 0 -5 66

如果是大端,則結果: 66 -5 0 0

另外,也可以用以下更加簡便的代碼測試:

int main()

{

unsigned int a=65;//A的ASCII碼為65

char *p=(char *)a;

printf("%c",a);

return 0;

}

如果輸出是A,則可判斷為小端序。

3、處理器體系(維基百科):

總結

以上是生活随笔為你收集整理的java. 端序_c代码测试本机处理器的端序的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。