亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

關(guān)于大小端、位域的一些概念詳解

 更新時(shí)間:2013年10月08日 08:56:35   作者:  
我們常用的x86結(jié)構(gòu)都是小端模式,而大部分DSP,ARM也是小端模式,不過(guò)有些ARM是可以選擇大小端模式。所以對(duì)于上面的maxHeight是應(yīng)該以小端模式來(lái)存放,具體情況請(qǐng)看下面兩表

大小端:

對(duì)于像C++中的char這樣的數(shù)據(jù)類(lèi)型,它本身就是占用一個(gè)字節(jié)的大小,不會(huì)產(chǎn)生什么問(wèn)題。但是當(dāng)數(shù)制類(lèi)型為int,在32bit的系統(tǒng)中,它需要占用4個(gè)字節(jié)(32bit),這個(gè)時(shí)候就會(huì)產(chǎn)生這4個(gè)字節(jié)在寄存器中的存放順序的問(wèn)題。比如int maxHeight = 0x12345678,&maxHeight = 0x0042ffc4。具體的該怎么存放呢?這個(gè)時(shí)候就需要理解計(jì)算機(jī)的大小端的原理了。

大端:(Big-Endian)就是把數(shù)值的高位字節(jié)放在內(nèi)存的低位地址上,把數(shù)值的地位字節(jié)放在內(nèi)存的高位地址上。

小端:(Little-Endian)就是把數(shù)字的高位字節(jié)放在高位的地址上,低位字節(jié)放在低位地址上。

我們常用的x86結(jié)構(gòu)都是小端模式,而大部分DSP,ARM也是小端模式,不過(guò)有些ARM是可以選擇大小端模式。所以對(duì)于上面的maxHeight是應(yīng)該以小端模式來(lái)存放,具體情況請(qǐng)看下面兩表。

    地址 0x0042ffc4 0x0042ffc5 0x0042ffc6 0x0042ffc7

數(shù)值

0x78

0x56

0x34

0x12

圖(1)為小端模式

地址 0x0042ffc4 0x0042ffc5 0x0042ffc6 0x0042ffc7
數(shù)值

0x12

0x34

0x56

0x78

圖(2)為大端模式

通過(guò)上面的表格,可以看出來(lái)大小端的不同,在這里無(wú)法討論那種方式更好,個(gè)人覺(jué)得似乎大端模式更符合我的習(xí)慣。(注:在這里我還要說(shuō)一句,其實(shí)在計(jì)算機(jī)內(nèi)存中并不存在所謂的數(shù)據(jù)類(lèi)型,比如char,int等的。這個(gè)類(lèi)型在代碼中的作用就是讓編譯器知道每次應(yīng)該從那個(gè)地址起始讀取多少位的數(shù)據(jù),賦值給相應(yīng)的變量。)

位域:

在計(jì)算機(jī)中是采用二進(jìn)制0和1來(lái)表示數(shù)據(jù)的,每一個(gè)0或者1占用1位(bit)存儲(chǔ)空間,8位組成一個(gè)字節(jié)(byte),為計(jì)算機(jī)中數(shù)據(jù)類(lèi)型的最小單位,如char在32bit系統(tǒng)中占用一個(gè)字節(jié)。但是正如我們知道的,有時(shí)候程序中的數(shù)據(jù)可能并不需要這么的字節(jié),比如一個(gè)開(kāi)關(guān)的狀態(tài),只有開(kāi)和關(guān),用1和0分別替代就可以表示。此時(shí)開(kāi)關(guān)的狀態(tài)只需要一位存儲(chǔ)空間就可以滿足要求。如果用一個(gè)字節(jié)來(lái)存儲(chǔ),顯然浪費(fèi)了另外的7位存儲(chǔ)空間。所以在C語(yǔ)言中就有了位段(有的也叫位域,其實(shí)是一個(gè)東西)這個(gè)概念。具體的語(yǔ)法就是在變量名字后面,加上冒號(hào)(:)和指定的存儲(chǔ)空間的位數(shù)。具體的定義語(yǔ)法如下:

復(fù)制代碼 代碼如下:

struct 位段名稱(chēng)   
{      
   位段數(shù)據(jù)類(lèi)型   位段變量名稱(chēng) : 位段長(zhǎng)度;
   .......    
}  

//實(shí)例  
struct Node 

   char a:2; 
   double i; 
   int c:4; 
}node;


其實(shí)定義很簡(jiǎn)單,上面示例的意義是,定義一個(gè)char變量a,占用2位存儲(chǔ)空間,一個(gè)double變量i,以及一個(gè)占用4位存儲(chǔ)的int變量c。請(qǐng)注意這里改變了變量本來(lái)占用字節(jié)的大小,并不是我們常規(guī)定義的一個(gè)int變量占用4個(gè)字節(jié),一個(gè)char變量占用1一個(gè)字節(jié)。在實(shí)際的運(yùn)行環(huán)境中運(yùn)行,由于內(nèi)存字節(jié)對(duì)齊,得到sizeof(node) = 24。

相關(guān)文章

  • C++實(shí)現(xiàn)簡(jiǎn)易選課系統(tǒng)代碼分享

    C++實(shí)現(xiàn)簡(jiǎn)易選課系統(tǒng)代碼分享

    這篇文章主要介紹了C++實(shí)現(xiàn)簡(jiǎn)易選課系統(tǒng)及實(shí)現(xiàn)代碼的分享,具有一定的參考價(jià)值,需要的小伙伴可以參考一下,希望對(duì)你有所幫助
    2022-01-01
  • mac 配置Clion運(yùn)行C和C++的環(huán)境的詳細(xì)步驟

    mac 配置Clion運(yùn)行C和C++的環(huán)境的詳細(xì)步驟

    這篇文章主要介紹了mac 配置Clion運(yùn)行C和C++的環(huán)境的步驟詳解,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-04-04
  • c語(yǔ)言中形參與實(shí)參的關(guān)系解讀

    c語(yǔ)言中形參與實(shí)參的關(guān)系解讀

    這篇文章主要介紹了c語(yǔ)言中形參與實(shí)參的關(guān)系,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • C++類(lèi)中的特殊成員函數(shù)示例詳解

    C++類(lèi)中的特殊成員函數(shù)示例詳解

    這篇文章主要給大家介紹了關(guān)于C++類(lèi)中特殊成員函數(shù)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-02-02
  • C語(yǔ)言中access/_access函數(shù)的使用實(shí)例詳解

    C語(yǔ)言中access/_access函數(shù)的使用實(shí)例詳解

    本文通過(guò)實(shí)例代碼給大家介紹了C語(yǔ)言中access/_access函數(shù)的使用,代碼簡(jiǎn)單易懂,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-09-09
  • C++拷貝構(gòu)造函數(shù)(深拷貝與淺拷貝)詳解

    C++拷貝構(gòu)造函數(shù)(深拷貝與淺拷貝)詳解

    深拷貝和淺拷貝可以簡(jiǎn)單理解為:如果一個(gè)類(lèi)擁有資源,當(dāng)這個(gè)類(lèi)的對(duì)象發(fā)生復(fù)制過(guò)程的時(shí)候,資源重新分配,這個(gè)過(guò)程就是深拷貝,反之,沒(méi)有重新分配資源,就是淺拷貝
    2013-09-09
  • C++類(lèi)和對(duì)象到底是什么

    C++類(lèi)和對(duì)象到底是什么

    C++ 是一門(mén)面向?qū)ο蟮木幊陶Z(yǔ)言,理解 C++,首先要理解類(lèi)(Class)和對(duì)象(Object)這兩個(gè)概念。下面和小編一起來(lái)學(xué)習(xí)吧
    2021-09-09
  • C語(yǔ)言用函數(shù)指針實(shí)現(xiàn)一個(gè)特別的計(jì)算器

    C語(yǔ)言用函數(shù)指針實(shí)現(xiàn)一個(gè)特別的計(jì)算器

    函數(shù)指針是一個(gè)指針變量,它可以存儲(chǔ)函數(shù)的地址,然后使用函數(shù)指針,下面這篇文章主要給大家介紹了關(guān)于C語(yǔ)言用函數(shù)指針實(shí)現(xiàn)計(jì)算器的方法,需要的朋友可以參考下
    2022-07-07
  • 解析C++中虛析構(gòu)函數(shù)的作用

    解析C++中虛析構(gòu)函數(shù)的作用

    本篇文章是對(duì)C++中虛析構(gòu)函數(shù)的作用進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • C++哈希應(yīng)用之位圖,哈希切分與布隆過(guò)濾器詳解

    C++哈希應(yīng)用之位圖,哈希切分與布隆過(guò)濾器詳解

    這篇文章主要為大家詳細(xì)介紹了C++哈希應(yīng)用中的位圖、哈希切分與布隆過(guò)濾器,文中的示例代碼講解詳細(xì),具有一定的學(xué)習(xí)價(jià)值,需要的可以參考一下
    2023-04-04

最新評(píng)論