【學習筆記】【C語言】變數的記憶體分析,學習筆記c語言變數

來源:互聯網
上載者:User

【學習筆記】【C語言】變數的記憶體分析,學習筆記c語言變數

電腦中的記憶體是以位元組為單位的儲存空間。記憶體的每一個位元組都有一個唯一的編號,這個編號就稱為地址。就好像酒店是以房間為單位的,每個房間都有一個唯一的房號,我們根據房號就能找到對應的房間。

1. 變數的儲存

1> 所佔用位元組數跟類型有關,也跟編譯器環境有關

void putBinary(int n){ int bits = sizeof(n) * 8; while (bits-->0) { printf("%d", n>>bits&1); if (bits%4==0) printf(" "); } printf("\n");}

2. 負數在記憶體中的儲存

1 int main()2  {3     int b = -10;  4     return 0;5  } 

在第3行定義了一個整型變數,它的值是-10。-10在記憶體中怎樣儲存的呢?其實任何數值在記憶體中都是以補碼的形式儲存的。

  • 正數的補碼與原碼相同。比如9的原碼和補碼都是1001
  • 負數的補碼等於它正數的原碼取反後再+1。(取反的意思就是0變1、1變0)

那麼-10的補碼計算過程如下:

1> 先算出10的二進位形式:0000 0000 0000 0000 0000 0000 0000 1010

2> 對10的二進位進行取反:1111 1111 1111 1111 1111 1111 1111 0101

3> 對取反後的結果+1:1111 1111 1111 1111 1111 1111 1111 0110

因此,整數-10在記憶體中的二進位形式是:1111 1111 1111 1111 1111 1111 1111 0110

3. 取值範圍

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.