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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

Big Endian与Little Endian区别

發(fā)布時間:2023/12/20 编程问答 49 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Big Endian与Little Endian区别 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

author:skate
time :2010/03/05


?

Big Endian與Little Endian區(qū)別

?

1. 什么是Big Endian和Little Endian?

?

在設計計算機系統(tǒng)的時候,有兩種處理內存中數(shù)據(jù)的方法。一種叫為little-endian,存放在內存中最低位的數(shù)值是來自數(shù)據(jù)的
最右邊部分(也就是數(shù)據(jù)的最低位部分)。比如一個16進制數(shù)字0x12345678,在內存存放的方式如下:

?

?????? 低地址 ------------------> 高地址
?????? ####################################################
值??? #0111,1000 #0101,0110 # 0011,0100? #? 0001,0010? #
????? ?####################################################
地址 #????? 100????????#???? 101?????? ?#????????? 102????? ?#????? 103??????? ? #
?????? ####################################################

?另一種稱為big-endian,正好相反,存放在內存中最低位的數(shù)值是來自數(shù)據(jù)的最左邊邊部分(也就是數(shù)據(jù)的最高為部分)。
?比如一個16進制數(shù)字0x12345678,在內存存放的方式如下:


?????? 低地址 ------------------> 高地址
?????? ####################################################
?值?? # 0001,0010? #0011,0100 # 0101,0110 ?# ?0111,1000? #
?????? ####################################################
地址 #?????? 100??????? ?#???? 101??????? ?#??????? 102???? ?? #????? ? 103??????? ?#
?????? ####################################################


從上面的例子可以看到,采用big endian方式存儲數(shù)據(jù)是符合我們人類的思維習慣的


big endian:是指低地址存放最高有效字節(jié)(MSB:Most Significant Byte, 最高有效字節(jié)),
little endian:則是低地址存放最低有效字節(jié)(LSB:Least Significant Byte, 最低有效字節(jié))


談到字節(jié)序的問題,必然牽涉到兩大CPU派系。那就是Motorola的PowerPC系列CPU和Intel的x86系列CPU。
IBM, Motorola(Power PC), Sun的機器一般采用大端(big endian)方式存儲數(shù)據(jù)。而x86系列則采用
little endian方式存儲數(shù)據(jù)

?

是Little Endian還是Big Endian與操作系統(tǒng)和芯片類型都有關系。 具體情形參考處理器手冊。

?

2. 如何判斷系統(tǒng)是Big Endian還是Little Endian

?

在/usr/include/中(包括子目錄)查找字符串BYTE_ORDER(或_BYTE_ORDER, __BYTE_ORDER),確定其值。
這個值一般在endian.h或machine/endian.h文件中可以找到,有時在feature.h中,不同的操作系統(tǒng)可能
有所不同。一般來說,Little Endian系統(tǒng)BYTE_ORDER(或_BYTE_ORDER,__BYTE_ORDER)為1234,Big Endian系統(tǒng)為4321


3. 為什么要注意字節(jié)序的問題?

?

在單機環(huán)境里的程序不用考慮字節(jié)序(endian)的問題,因為字節(jié)序的不同是在不同單機環(huán)境里的,如果你要在不同單機
之間傳遞數(shù)據(jù),就要考慮字節(jié)序的問題,因為數(shù)據(jù)是按地址存取的,如果你是不同的字節(jié)序單機通信,就會導致傳輸數(shù)據(jù)
”變異“,例如,把little endian環(huán)境的數(shù)據(jù)0x12345678的指針傳遞給big endian環(huán)境,數(shù)據(jù)就“變異”為0x78563412

?

所有網(wǎng)絡協(xié)議也都是采用big endian的方式來傳輸數(shù)據(jù)的。所以有時我們也會把big endian方式稱之為網(wǎng)絡字節(jié)序。當兩臺采
用不同字節(jié)序的主機通信時,在發(fā)送數(shù)據(jù)之前都必須經(jīng)過字節(jié)序的轉換成為網(wǎng)絡字節(jié)序后再進行傳輸。

?

?

在異構主機數(shù)據(jù)庫遷移的過程一定要注意這個,如果字節(jié)序不同,可以用rman convert轉換字節(jié)序(endian)

?

例如:

?

RMAN TARGET /
CONVERT TABLESPACE ts1,ts2 TO PLATFORM 'Linux IA (32-bit)' FORMAT '/tempdir/%U';

?

?

?


----end----

總結

以上是生活随笔為你收集整理的Big Endian与Little Endian区别的全部內容,希望文章能夠幫你解決所遇到的問題。

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