亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

整型數據在內存中存儲方式的講解

發布時間:2020-09-27 18:31:39 來源:腳本之家 閱讀:196 作者:迂者-賀利堅 欄目:編程語言

(以下討論,針對32位的計算機系統。。)

問:int型數據占幾個字節?答:4字節。地球上這個群體的人都知道。

再問:這4個字節,即32個二進制位,又是何存儲?這就進入計算機的“底層”了。這個事情,學習程序設計的童鞋,可以懂。

存儲的方式,和我們拍腦袋想得不太一樣,概括一下,就是低位在前,高位在后。

本文直觀一些,看懂以下程序中數據的存儲,也便知道這個安排。

整型數據在內存中存儲方式的講解

(源程序,及在watch窗口中用多種方式看x.c的方法,見文后附件。)

在程序中,由于聯合體存儲的特點,變量x占4個字節。我們可以從3個角度觀察這4個字節:(1) 整體看,是一個int型數據;(2) 分成2部分看,是兩個短整型數據;(3) 分成4部分看,是4個單字節的數據。

但無論怎么看,就是這4個字節。無論用哪種形式操作數據,使用的也就是這4個字節。聯合體為我們提供了從不同的角度使用這4個字節的方式。

x.c[0]到x.c[3]的值分別為65\66\67\68,這好理解。

x.si[0]占的2字節,與x.c[0]和x.c[1]相同。驗證一下:16961=66×256+65(66是'B'的ACSII值,65是'A'的ASCII值,是字符的存儲形式)。注意,這里體現存儲數據時低位在前,高位在后,低位是65,高位是66。正如十進制數98中,高位是9,低位是8,所以98=9×10+8一樣。因為是高位,所以乘以位權10,表示9這個符號代表的其實是90。66×256,是因為存儲66(‘B')的那一個字節的位置,比存儲65(‘A')的那一個字節的位置高8位,所以乘以2的8次方,即256。

概括講,存儲2字節的16961時,其低8位,是65,在前(x.c[0]),而其高8位,是66,在后(x.c[1])。低位在前,高位在后。

請自行驗證:17475=68×256+67,體現低位在前,高位在后。(x.si[0]占的2字節,與x.c[2]和x.c[3]相同)

再請驗證:1145258561=17475×256×256+16961,也體現低位在前,高位在后。(x.i占的4字節,與x.si[0]和x.si[1]相同)

再請驗證:1145258561=68×256×256×256+67×256×256+66×256+65。同樣的道理。

換種寫法,是1145258561=(((68×256+67)×256+66)×256+65。

再看截圖,品味低位在前,高位在后。

這樣安排的道理,在以后的關于“計算機的原理”的有關專業課中會接觸到。

附1:本文源程序

#include <iostream>
using namespace std;
union un
{
  int i;
  short int si[2];
  char c[4];
};
int main()
{
  union un x;
  x.c[0]='A';
  x.c[1]='B';
  x.c[2]='C';
  x.c[3]='D';
  cout<< x.c[0]<<","<<x.c[1]<<","<< x.c[2]<<","<< x.c[3]<<endl;
  cout<<x.si[0]<<","<< x.si[1]<<endl;
  cout<<x.i<<endl;
  return 0;
}

附2:在watch窗口中用多種方式看x.c的方法

在watch窗口中,除自動顯示的局部變量的值,還可以自行輸入表達式跟蹤。

方法是,直接在表格中寫下表達式,如圖中,x.c,其他任意。

輸入表達式后,在上面點右鍵,會有幾個選項,點properties…(屬性),然后就是如下的窗口:

整型數據在內存中存儲方式的講解

任性地多角度觀察吧!

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對億速云的支持。如果你想了解更多相關內容請查看下面相關鏈接

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

虎林市| 兰州市| 沾益县| 临清市| 普宁市| 化州市| 北宁市| 军事| 江永县| 沾益县| 太仆寺旗| 天水市| 衡阳市| 七台河市| 太保市| 沂南县| 达孜县| 富裕县| 阳朔县| 砚山县| 禹州市| 乐山市| 那曲县| 石嘴山市| 锡林郭勒盟| 湘潭县| 黄石市| 宁都县| 安徽省| 怀来县| 石家庄市| 平利县| 灵山县| 东乌珠穆沁旗| 内黄县| 开平市| 汉寿县| 布尔津县| 泾川县| 韶山市| 柳林县|