本文介紹C#中位、字節等知識。
1. 位(bit)
位(bit)有叫做比特,指二進制中的一位,是二進制的最小信息單位。
bit也被稱作小b,用b表示。
2. 字節(bytes)
8位表示一個字節。
由以下公式可以算出一個字節最多表示256
\[2^8 = 256 \]
但實際上不會是256,8個字節最多表示:
111111
這個值是
\[2^7+2^6+2^5+2^4+2^3+2^2+2^1+1=255 \]
這也說明了以下內容:
byte.MaxValue == 255;
還需要注意的是,byte是無符號的,因此byte的范圍是從0-255
這個byte也被稱做大B,用B表示。
這個byte也是C#里面的byte。
3. KB和kb
上面說了B和b,再插一句KB和kb的區別。
Modem和訪問Internet的其他設備的傳輸速率通常是以“Kbps”(千比特/秒)來計量,而其他的數據傳輸速率,諸如IDE或SCSI總線的傳輸速率,則通常以“KBps”(千字節/秒)或“MBps”(兆字節/秒)為單位。
這兩個是不一樣的。
因為8位表示一個字節,所以可以理解
\[B=8b \]
再我們安裝寬帶的時候,說10M,指的是10mb,實際上的帶寬是:
\[10mb/8=1.25MB \]
4.sbyte
sbyte不同於byte的地方在於,sbyte是有符號的,也就是說,sbyte能表示負數。其最高位是符號位,所以sbyte只有7位能表示數值。
其最小值應該是:
\[-128 \]
其最大值應該是:
\[2^6+2^5+2^4+2^3+2^2+2^1+1=127 \]
關於為什么是-128而不是127,這篇文章講解的很詳細,都是補碼、反碼那套知識。
5.short ushort int uint long ulong
short
short是16位的有符號整數,也就是2字節的整數。
因為short有符號位,所以只有15位表示數值。其范圍應該是
\[-32768 -- 32767 \]
其他與short道理相同,不解釋。
6. char
char占用幾個字節呢?
在C#里面采用unicode,2個字節(16位)來表示一個字符。