青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

Shuffy

不斷的學習,不斷的思考,才能不斷的進步.Let's do better together!
posts - 102, comments - 43, trackbacks - 0, articles - 19

【大端(Big Endian)與小端(Little Endian)簡介】
Byte Endian是指字節在內存中的組織,所以也稱它為Byte Ordering,或Byte Order。
     對于數據中跨越多個字節的對象, 我們必須為它建立這樣的約定:
(1) 它的地址是多少?
(2) 它的字節在內存中是如何組織的?
    針對第一個問題,有這樣的解釋:
    對于跨越多個字節的對象,一般它所占的字節都是連續的,它的地址等于它所占字節最低地址。(鏈表可能是個例外, 但鏈表的地址可看作鏈表頭的地址)。
    比如: int x, 它的地址為0x100。 那么它占據了內存中的Ox100, 0x101, 0x102, 0x103這四個字節(32位系統,所以int占用4個字節)。
    上面只是內存字節組織的一種情況: 多字節對象在內存中的組織有一般有兩種約定。 考慮一個W位的整數。
    它的各位表達如下:[Xw-1, Xw-2, ... , X1, X0],它的
    MSB (Most Significant Byte, 最高有效字節)為 [Xw-1, Xw-2, ... Xw-8];
    LSB (Least Significant Byte, 最低有效字節)為 [X7,X6,..., X0]。
    其余的字節位于MSB, LSB之間。

LSB和MSB誰位于內存的最低地址, 即誰代表該對象的地址?
這就引出了大端(Big Endian)與小端(Little Endian)的問題。
如果LSB在MSB前面, 既LSB是低地址, 則該機器是小端; 反之則是大端。
DEC (Digital Equipment Corporation,現在是Compaq公司的一部分)和Intel的機器(X86平臺)一般采用小端。
IBM, Motorola(Power PC), Sun的機器一般采用大端。
當然,這不代表所有情況。有的CPU即能工作于小端, 又能工作于大端, 比如ARM, Alpha,摩托羅拉的PowerPC。 具體情形參考處理器手冊。

具體這類CPU是大端還是小端,應該和具體設置有關。
(如,Power PC支持little-endian字節序,但在默認配置時是big-endian字節序)
一般來說,大部分用戶的操作系統(如windows, FreeBsd,Linux)是Little Endian的。少部分,如MAC OS ,是Big Endian 的。
所以說,Little Endian還是Big Endian與操作系統和芯片類型都有關系。

Linux系統中,你可以在/usr/include/中(包括子目錄)查找字符串BYTE_ORDER(或
_BYTE_ORDER, __BYTE_ORDER),確定其值。BYTE_ORDER中文稱為字節序。這個值一般在endian.h或machine/endian.h文件中可以找到,有時在feature.h中,不同的操作系統可能有所不同。

          big endian是指低地址存放最高有效字節(MSB),而little endian則是低地址存放最低有效字節(LSB)。
         用文字說明可能比較抽象,下面用圖像加以說明。比如數字0x12345678在兩種不同字節序CPU中的存儲順序如下所示:

Big Endian

   低地址                                            高地址
   ----------------------------------------->
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |     12     |      34    |     56      |     78    |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Little Endian

   低地址                                            高地址
   ----------------------------------------->
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |     78     |      56    |     34      |     12    |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

        從上面兩圖可以看出,采用big endian方式存儲數據是符合我們人類的思維習慣的.
        為什么要注意字節序的問題呢?你可能這么問。當然,如果你寫的程序只在單機環境下面運行,并且不和別人的程序打交道,那么你完全可以忽略字節序的存在。但是,如果你的程序要跟別人的程序產生交互呢?在這里我想說說兩種語言。C/C++語言編寫的程序里數據存儲順序是跟編譯平臺所在的CPU相關的,而J***A編寫的程序則唯一采用big endian方式來存儲數據。試想,如果你用C/C++語言在x86平臺下編寫的程序跟別人的J***A程序互通時會產生什么結果?就拿上面的0x12345678來說,你的程序傳遞給別人的一個數據,將指向0x12345678的指針傳給了J***A程序,由于J***A采取big endian方式存儲數據,很自然的它會將你的數據翻譯為0x78563412。什么?竟然變成另外一個數字了?是的,就是這種后果。因此,在你的C程序傳給J***A程序之前有必要進行字節序的轉換工作。
     無獨有偶,所有網絡協議也都是采用big endian的方式來傳輸數據的。所以有時我們也會把big endian方式稱之為網絡字節序。當兩臺采用不同字節序的主機通信時,在發送數據之前都必須經過字節序的轉換成為網絡字節序后再進行傳輸。ANSI C中提供了下面四個轉換字節序的宏。
·BE和LE一文的補完
        我在8月9號的《Big Endian和Little Endian》一文中談了字節序的問題,原文見上面的超級鏈接。可是有朋友仍然會問,CPU存儲一個字節的數據時其字節內的8個比特之間的順序是否也有big endian和little endian之分?或者說是否有比特序的不同?
     實際上,這個比特序是同樣存在的。下面以數字0xB4(10110100)用圖加以說明。

Big Endian

   msb                                                         lsb
   ---------------------------------------------->
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |   1  |   0  |   1  |   1  |   0  |   1  |   0  |   0  |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Little Endian

   lsb                                                         msb
   ---------------------------------------------->
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |   0  |   0  |   1  |   0  |   1  |   1  |   0  |   1  |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+


     實際上,由于CPU存儲數據操作的最小單位是一個字節,其內部的比特序是什么樣對我們的程序來說是一個黑盒子。也就是說,你給我一個指向0xB4這個數的指針,對于big endian方式的CPU來說,它是從左往右依次讀取這個數的8個比特;而對于little endian方式的CPU來說,則正好相反,是從右往左依次讀取這個數的8個比特。而我們的程序通過這個指針訪問后得到的數就是0xB4,字節內部的比特序對于程序來說是不可見的,其實這點對于單機上的字節序來說也是一樣的。
     那可能有人又會問,如果是網絡傳輸呢?會不會出問題?是不是也要通過什么函數轉換一下比特序?嗯,這個問題提得很好。假設little endian方式的CPU要傳給big endian方式CPU一個字節的話,其本身在傳輸之前會在本地就讀出這個8比特的數,然后再按照網絡字節序的順序來傳輸這8個比特,這樣的話到了接收端不會出現任何問題。而假如要傳輸一個32比特的數的話,由于這個數在littel endian方存儲時占了4個字節,而網絡傳輸是以字節為單位進行的,little endian方的CPU讀出第一個字節后發送,實際上這個字節是原數的LSB,到了接收方反倒成了MSB從而發生混亂。

【用函數判斷系統是Big Endian還是Little Endian】
bool IsBig_Endian()
//如果字節序為big-endian,返回true;
//反之為   little-endian,返回false
{
    unsigned short test = 0x1122;
    if(*( (unsigned char*) &test ) == 0x11)
       return TRUE;
else
    return FALSE;

}//IsBig_Endian()

以上資料整理自:
http://hi.baidu.com/serial_story/blog/item/7e110587c3ed8e29c75cc3c7.html
http://qzone.qq.com/blog/574754870-1219889620

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            免费不卡在线观看av| 99视频日韩| 欧美一区二区黄| 亚洲私人影院| 亚洲三级影院| 欧美福利一区二区| 亚洲欧洲在线播放| 久久在线免费| 久久综合九色综合久99| 久久国产一区二区| 久久精品综合一区| 久久久精品国产99久久精品芒果| 亚洲自拍电影| 欧美一区二区视频网站| 亚洲欧美电影在线观看| 亚洲一区在线免费观看| 午夜视频在线观看一区| 销魂美女一区二区三区视频在线| 午夜精品美女自拍福到在线| 欧美中文日韩| 欧美精品激情在线观看| 欧美理论大片| 久久精品99| 一区二区三区国产在线| 亚洲一区三区视频在线观看| 欧美一区二区三区免费观看| 久久久亚洲午夜电影| 欧美视频福利| 一区精品在线| 羞羞答答国产精品www一本| 免费久久99精品国产自在现线| 免费黄网站欧美| 亚洲性视频网址| 欧美韩国在线| 国产欧美一级| 亚洲欧美日韩精品在线| 91久久精品视频| 久久精品国产综合| 国产免费成人| 亚洲欧美日韩爽爽影院| 欧美国产综合| 欧美国产日韩一区二区三区| 久久精品国产第一区二区三区最新章节| 亚洲日本成人网| 农夫在线精品视频免费观看| 国产三级精品三级| 欧美制服丝袜第一页| 亚洲综合精品一区二区| 国产精品久久一级| 久久久中精品2020中文| 久久精品国产清高在天天线| 国产精品婷婷| 久久综合色天天久久综合图片| 久久久久国内| 99精品国产热久久91蜜凸| 日韩一级视频免费观看在线| 欧美成人一区二区三区在线观看| 久久网站免费| 国产日韩精品久久| 欧美jizzhd精品欧美巨大免费| 美国成人毛片| 久久精品国产99国产精品澳门| 久久国产欧美日韩精品| 国产综合在线看| 日韩视频免费在线观看| 国产日韩欧美日韩大片| 欧美高清在线视频观看不卡| 欧美风情在线观看| 久久亚洲高清| 欧美日韩黄视频| 欧美国产日韩一区二区三区| 欧美性大战久久久久久久蜜臀| 蜜臀av性久久久久蜜臀aⅴ| 欧美日韩国产亚洲一区| 免费成人激情视频| 国产亚洲成人一区| 亚洲自拍偷拍色片视频| 一本久久综合亚洲鲁鲁| 久久久精品网| 亚洲最新在线视频| 亚洲国产精品一区二区www| 韩国v欧美v日本v亚洲v| 亚洲欧美日韩国产| 久久国产精品99国产精| 国产日韩在线看片| 久久久综合激的五月天| 亚洲深夜影院| 国产伦精品一区二区三区免费迷| 亚洲乱码国产乱码精品精| 国产欧美日韩一区二区三区在线| 亚洲一区二区av电影| 久久成人18免费网站| 国产美女高潮久久白浆| 亚洲欧美网站| 国产日产欧美a一级在线| 久久久亚洲影院你懂的| 欧美成人午夜免费视在线看片 | 国产精品国产三级国产普通话蜜臀| 久久天堂成人| 日韩一二三在线视频播| 国产精品分类| 久久综合伊人77777尤物| 日韩一区二区福利| 欧美wwwwww| 久久99在线观看| 亚洲精品小视频| 国产色综合网| 欧美日韩一区二区三区在线看 | 亚洲国产视频直播| 欧美精品激情blacked18| 亚洲欧美日本视频在线观看| 最新国产成人av网站网址麻豆| 羞羞答答国产精品www一本 | 午夜一区二区三视频在线观看| 欧美日本在线看| 久久亚洲国产成人| 性亚洲最疯狂xxxx高清| 亚洲视频一起| 亚洲午夜激情| 日韩亚洲视频| 亚洲午夜视频在线| 亚洲综合二区| 久久久www| 免费在线看一区| 免费的成人av| 久久婷婷国产麻豆91天堂| 亚洲一区二区三区免费视频| 中国日韩欧美久久久久久久久| 亚洲另类在线视频| 亚洲一区在线播放| 亚洲欧美综合v| 欧美+亚洲+精品+三区| 欧美成年人视频网站欧美| 亚洲电影av在线| 中文av一区二区| 欧美一区91| 欧美国产日韩一区二区在线观看 | 久久免费少妇高潮久久精品99| 午夜在线电影亚洲一区| 久久久夜精品| 欧美欧美天天天天操| 国产日产亚洲精品| 亚洲人成亚洲人成在线观看图片| 亚洲伦理在线| 免费成人毛片| 一区二区三欧美| 欧美精品久久久久久久久久| 国产亚洲视频在线观看| 亚洲天堂男人| 日韩一区二区免费高清| 蜜臀久久久99精品久久久久久| 国产精品国产三级欧美二区| 国产视频在线一区二区| 国产精品一区一区三区| 欧美精品在线观看播放| 国产日产欧美a一级在线| 亚洲男人的天堂在线aⅴ视频| 欧美国产一区视频在线观看| 久久爱另类一区二区小说| 国产精品免费区二区三区观看| 日韩视频在线一区二区三区| 女女同性精品视频| 欧美日韩日本网| 欧美成人在线免费视频| 18成人免费观看视频| 亚洲高清视频中文字幕| 欧美日韩国产美| 欧美在线观看视频一区二区| 久久精品国产综合精品| 一本色道久久综合亚洲精品小说 | 亚洲激情婷婷| 亚洲免费激情| 精品成人在线| 99精品视频网| 在线观看日韩av电影| 亚洲精品一区久久久久久| 国产精品二区三区四区| 亚洲动漫精品| 国内不卡一区二区三区| 亚洲精品一区二区三区在线观看| 国产日韩欧美黄色| 亚洲一区二区精品在线| 亚洲免费不卡| 久久夜色精品国产欧美乱| 亚洲免费影院| 欧美午夜精品久久久久久久 | 在线亚洲伦理| 欧美性大战久久久久| 欧美高清不卡在线| 国精品一区二区三区| 亚洲欧美日韩综合国产aⅴ| 一区二区日韩| 国产精品草莓在线免费观看| 亚洲人成亚洲人成在线观看| 亚洲高清视频在线| 免费在线成人av| 妖精视频成人观看www| 一本一本久久| 国产精品久久久久影院色老大| 一区二区高清在线|