欧美大屁股bbbbxxxx,狼人大香伊蕉国产www亚洲,男ji大巴进入女人的视频小说,男人把ji大巴放进女人免费视频,免费情侣作爱视频

歡迎來到入門教程網(wǎng)!

C語言

當前位置:主頁 > 軟件編程 > C語言 >

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

來源:本站原創(chuàng)|時間:2020-01-10|欄目:C語言|點擊: 次

大小端:

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

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

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

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

    地址 0x0042ffc4 0x0042ffc5 0x0042ffc6 0x0042ffc7

數(shù)值

0x78

0x56

0x34

0x12

圖(1)為小端模式

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

0x12

0x34

0x56

0x78

圖(2)為大端模式

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

位域:

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

復制代碼 代碼如下:

struct 位段名稱   
{      
   位段數(shù)據(jù)類型   位段變量名稱 : 位段長度;
   .......    
}  

//實例  
struct Node 

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


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

上一篇:淺析iterator與指針的區(qū)別

欄    目:C語言

下一篇:typedef和#define的用法以及區(qū)別

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

本文地址:http://mengdiqiu.com.cn/a1/Cyuyan/4021.html

網(wǎng)頁制作CMS教程網(wǎng)絡編程軟件編程腳本語言數(shù)據(jù)庫服務器

如果侵犯了您的權(quán)利,請與我們聯(lián)系,我們將在24小時內(nèi)進行處理、任何非本站因素導致的法律后果,本站均不負任何責任。

聯(lián)系QQ:835971066 | 郵箱:835971066#qq.com(#換成@)

Copyright © 2002-2020 腳本教程網(wǎng) 版權(quán)所有