閑聊c/c++: 談內(nèi)存(大/小端,高/低字節(jié)剑肯,高/低地址)

c/c++和其他語言最大區(qū)別在于: 指針

指針就是內(nèi)存地址捧毛,一旦明白了指針與內(nèi)存地址相關的內(nèi)容,那理解其他語言让网,就易如反掌呀忧。

而且你可以把其他語言用的更加好,更加有效率

例如java/js/objc中為什么容器中只能存儲引用類型?
如果存儲基本數(shù)據(jù)類型(值類型),為什么會發(fā)生效率很低的裝箱拆箱行為溃睹?
而c#為什么就不會呢?
你怎么才能讓不使用的內(nèi)存盡快被垃圾收集器回收過去?
還有很多涉及內(nèi)存相關的內(nèi)容而账,例如堆分配,棧分配等........

根據(jù)經(jīng)驗:

  1. 如果你一開始學的是c/c++因篇,并且有這一定的c語言運行庫(crt)及stl庫的使用經(jīng)驗泞辐,那么轉其他語言基本上只要熟悉一下語法就能快速上手

  2. 如果你有幾年開發(fā)經(jīng)驗,想更上一層樓竞滓,那么學習c/c++是必要的選擇咐吼。由于有程序的經(jīng)驗,學習c/c++并不算很難

本篇目的:

  • 什么是大端【Big-endian】小端【Little-endian】
  • 搞明白大端小端(關鍵是理解高/低字節(jié)以及高/低地址)

大小端的定義(來自百度百科的定義):

  • 大端:【高低低高|左左右右】
    數(shù)據(jù)的高字節(jié)保存在內(nèi)存的低地址中虽界,而數(shù)據(jù)的低字節(jié)保存在內(nèi)存的高地址

  • 小端:【高高低低|左右右左】
    數(shù)據(jù)的高字節(jié)保存在內(nèi)存的高地址中汽烦,而數(shù)據(jù)的低字節(jié)保存在內(nèi)存的低地址

是不是感覺很繞口啊涛菠,特難理解吧莉御!

理解大小端的關鍵點是明白:

  • 什么是高低地址
  • 什么是高低字節(jié)

高地址,低地址:

  • 計算機中最基礎的存儲單位是字節(jié)(byte)
    1 byte = 8 bit,00000000->11111111,表示范圍[0,255]
  • 對內(nèi)存中的每一個字節(jié)(byte)俗冻,都有一個索引編號礁叔,這就是傳說中的指針,也就是地址
高低地址.png

很容易理解高低地址了吧迄薄,就是書寫順序

高字節(jié)琅关,低字節(jié):

  • 對于一個字節(jié)(char/unsigned char/bool)的數(shù)據(jù)類型來說,是沒有高低字節(jié)之分的
  • 只有大于一個字節(jié)以上的數(shù)據(jù)類型(我們下面以unsigned int來舉例說明)才要區(qū)分高低字節(jié)
高低字節(jié).jpg

大端讥蔽,小端

//第一個RGBA為unsigned int類型
typedef unsigned int RGBA;

//220 = DC
//110 = 6E
// 53 = 35
// FF = 255

RGBA rgba = 0xDC6E35FF


高低字節(jié)是:左高右低
高低地址是:左低右高


根據(jù)大端的定義:

數(shù)據(jù)的高字節(jié)保存在內(nèi)存的低地址中涣易,而數(shù)據(jù)的低字節(jié)保存在內(nèi)存的高地址

則內(nèi)存存儲的方式是:

DC是最高字節(jié)[最左],放在內(nèi)存的最低地址[最左]
FF是最低字節(jié)[最右]冶伞,放在內(nèi)存的最高地址[最右]
按照這個規(guī)則新症,很容易知道,大端在內(nèi)存存儲的順序是:


DC|6E|35|FF(和rgba = 0xDC6E35FF一致的順序)


根據(jù)小端的定義:

數(shù)據(jù)的高字節(jié)保存在內(nèi)存的高地址中响禽,而數(shù)據(jù)的低字節(jié)保存在內(nèi)存的低地址

則內(nèi)存存儲的方式是:

DC是最高字節(jié)[最左]徒爹,放在內(nèi)存的最高地址[最右]
FF是最低字節(jié)[最右]荚醒,放在內(nèi)存的最低地址[最左]
按照這個規(guī)則,很容易知道隆嗅,小端在內(nèi)存存儲的順序是:


FF|35|6E|DC(和rgba = 0xDC6E35FF相反的順序)


這樣就很清楚的了解了大端和小端的含義了=绺蟆!

口訣:

先字節(jié)后地址:

  • 大端: 高低低高|左左右右|方向一致
  • 小端: 高高低低|左右右左|方向相反

附:今天老師帶隊一起寫生去 文章我昨天半夜寫的


圖片發(fā)自簡書App
最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末胖喳,一起剝皮案震驚了整個濱河市泡躯,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌禀晓,老刑警劉巖精续,帶你破解...
    沈念sama閱讀 216,496評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異粹懒,居然都是意外死亡重付,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,407評論 3 392
  • 文/潘曉璐 我一進店門凫乖,熙熙樓的掌柜王于貴愁眉苦臉地迎上來确垫,“玉大人,你說我怎么就攤上這事帽芽∩鞠疲” “怎么了?”我有些...
    開封第一講書人閱讀 162,632評論 0 353
  • 文/不壞的土叔 我叫張陵导街,是天一觀的道長披泪。 經(jīng)常有香客問我,道長搬瑰,這世上最難降的妖魔是什么款票? 我笑而不...
    開封第一講書人閱讀 58,180評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮泽论,結果婚禮上艾少,老公的妹妹穿的比我還像新娘。我一直安慰自己翼悴,他們只是感情好缚够,可當我...
    茶點故事閱讀 67,198評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著鹦赎,像睡著了一般谍椅。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上古话,一...
    開封第一講書人閱讀 51,165評論 1 299
  • 那天雏吭,我揣著相機與錄音,去河邊找鬼煞额。 笑死思恐,一個胖子當著我的面吹牛沾谜,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播胀莹,決...
    沈念sama閱讀 40,052評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼基跑,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了描焰?” 一聲冷哼從身側響起媳否,我...
    開封第一講書人閱讀 38,910評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎荆秦,沒想到半個月后篱竭,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,324評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡步绸,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,542評論 2 332
  • 正文 我和宋清朗相戀三年掺逼,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片瓤介。...
    茶點故事閱讀 39,711評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡吕喘,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出刑桑,到底是詐尸還是另有隱情氯质,我是刑警寧澤,帶...
    沈念sama閱讀 35,424評論 5 343
  • 正文 年R本政府宣布祠斧,位于F島的核電站闻察,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏琢锋。R本人自食惡果不足惜辕漂,卻給世界環(huán)境...
    茶點故事閱讀 41,017評論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望吩蔑。 院中可真熱鬧钮热,春花似錦填抬、人聲如沸烛芬。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,668評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽赘娄。三九已至,卻和暖如春宏蛉,著一層夾襖步出監(jiān)牢的瞬間遣臼,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,823評論 1 269
  • 我被黑心中介騙來泰國打工拾并, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留揍堰,地道東北人鹏浅。 一個月前我還...
    沈念sama閱讀 47,722評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像屏歹,于是被迫代替她去往敵國和親隐砸。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,611評論 2 353

推薦閱讀更多精彩內(nèi)容