大端(Big-Endian)和小端(Little-Endian)

來源:互聯網
上載者:User

大端(Big-Endian)和小端(Little-Endian)

採用大小模式對資料進行存放的主要區別在於在存放的位元組順序,大端方式將高位存放在低地址,小端方式將高位存放在高地址。採用大端方式進行資料存放符合人類的正常思維,而採用小端方式進行資料存放利於電腦處理。

比如0x3132的存放形式

大端模式:31
32 //符合人類的正常思維

小端模式:32
31

互連網使用的網路位元組順序採用大端模式進行編址,而主機位元組順序根據處理器的不同而不同,如PowerPC處理器使用大端模式,而Pentuim處理器使用小端模式。

樣本1:

#include<stdio.h>int main(void ){shorttest;test= 0x3132;char*c = (char *)&test;inti;for(i= 0; i < sizeof(short); ++i){printf("%x", *c++);}printf("\n");return0;}

運行結果:

32 31

證明我的處理器是小端模式

樣本2:
用gdb查看變數地址的內容

#include<netdb.h>#include<sys/socket.h>#include<stdio.h>intmain(int argc, char **argv){shorta = 0x0102;shortb = htons(a);return0;} 

用gdb進行調試

(gdb)x/2xb &a                       //gdb調試命令:x/<n/f/u><addr>

0xbffff39e: 0x02 0x01                      //再次證明我的處理器是小端模式

(gdb)x/2xb &b

0xbffff39c: 0x01 0x02

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

原文:http://www.52rd.com/Blog/Detail_RD.Blog_imjacob_14837.html

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.