學點C語言(27):資料類型

來源:互聯網
上載者:User

所有基礎的資料類型, 最大的也不過 10 個位元組;

我們可以自訂的資料類型 -- "結構", 通過把若干類型組合在一起, 讓一種類型可以大很多.

我們知道, 一個位元組有八個 Bit 組成; 能否把一種類型縮小、縮小到 Bit 級?

結構中的 "位欄位" 是以 Bit 為單位的, 這已經是電腦的最小單位, 大小是 char 類型的 1/8.

下面的例子中定義的位欄位, 分別有 1-4 Bit 大小; 1 Bit 的欄位只能放兩個數(0、1), 4 Bit 的欄位也只能放下 16 個數:

1. 結構體可以包含位欄位:

#include <stdio.h>

int main(void)
{
  struct Bit {
    unsigned a: 1; /* 1 Bit, 取值範圍: 0 - 1 */
    unsigned b: 2; /* 2 Bit, 取值範圍: 0 - 3 */
    unsigned c: 3; /* 3 Bit, 取值範圍: 0 - 7 */
    unsigned d: 4; /* 4 Bit, 取值範圍: 0 - 15 */
  } B;

  B.a = 1;
  B.b = 3;
  B.c = 7;
  B.d = 15;

  printf("%d, %d, %d, %d\n", B.a, B.b, B.c, B.d);

  getchar();
  return 0;
}

上例中, 位域的類型被指定為是無符號的整型(unsigned int), 我試著只要是整型都可以, 但要一致.

假如我們定義 8 個欄位, 每個欄位都是 1 Bit, 就可以很好地明細一個位元組, 譬如:

11111111B = 255;

00000001B = 1;

00001111B = 15;

01111111B = 127;

下面的例子用程式對上面的說明做了落實:

相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

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

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