基本介紹
- 中文名:位元組
- 外文名:byte
- 簡寫:b
- 相關概念:ib;位(b,bit)
換算,字元與位元組,不同數量級間,存儲類型,相關單位,b與bit,b與ib,數據類型,語言字元,易混概念辨析,
換算
字元與位元組
:一個英文字母(不分大小寫)占一個位元組的空間。一個字序列,在計算機中作為一個數字單元,一般為8位二進制數。換算為十進制 ,最小值-128,最大值127。如一個ascii碼就是一個位元組。
utf-8編碼:一個英文等於一個位元組,一個中文(含繁體)等於三個位元組。中文標點占三個位元組,英文標點占一個位元組
unicode編碼:一個英文等於兩個位元組,一個中文(含繁體)等於兩個位元組。中文標點占兩個位元組,英文標點占兩個位元組
不同數量級間
國際單位制(si)
1kb=1024b;1mb=1024kb=1024×1024b。
1b(byte,位元組)= 8 bit(見下文);
1kb(kilobyte,)=24b= 2^10 b;
1(megabyte,,百萬位元組,簡稱“兆”)=1024kb= 2^20 b;
1(gigabyte,,十億位元組,又稱“千兆”)=1024mb= 2^30 b;
1(terabyte,萬億位元組,)=1024gb= 2^40 b;
1(petabyte,千萬億位元組,)=24tb= 2^50 b;
1(exabyte,百億億位元組,)=24pb= 2^60 b;
1(zettabyte,十萬億億位元組,)= 24eb= 2^70 b;
1(yottabyte,一億億億位元組,)= 24zb= 2^80 b;
1(brontobyte,一千億億億位元組)= 24yb= 2^90 b;
1nb(nonabyte,一百萬億億億位元組) = 24bb = 2^100 b;
1db(doggabyte,十億億億億位元組) = 24 nb = 2^110 b;
的電氣技術用字母符號標準iec 60027-2iec 80000-13
數據存儲是以10表示,數據傳輸是以2進制表示的,所以1kb不等於1000b。
1kb=1024b;1mb=1024kb=1024×1024b。其中1024=2。
1b(byte,位元組)= 8 bit(見下文);
1kib(kibibyte,)=1024b= 2^10 b;
1(mebibyte,,百萬位元組,簡稱“兆”)=1024kb= 2^20 b;
1(gibibyte,,十億位元組,又稱“千兆位元組”)=1024mb= 2^30 b;
1tib(tebibyte,萬億位元組,)=1024gb= 2^40 b;
1(pebibyte,千萬億位元組,)=1024tb= 2^50 b;
1(exbibyte,百億億位元組,)=1024pb= 2^60 b;
1zib(zebibyte,十萬億億位元組,)= 1024eb= 2^70 b;
1yib(yobibyte,一億億億位元組,)= 1024zb= 2^80 b;
由於混淆已經普遍化:
kilobyte往往可以指
megabyte往往可以指mebibyte
gigabyte往往可以是指gibibyte
terabyte往往可以指tebibyte
petabyte往往亦可以指pebibyte
exabyte往往亦可以指exbibyte
zettabyte往往亦可以指zebibyte
yottabyte往往亦可以指yobibyte
存儲類型
以下以visual basic為例,講解各種數據類型所占位元組。
數據類型 | 儲存空間大小(單位:位元組) | 範圍 |
byte(位元組型) | 1 | 0 - 255 |
boolean(布爾型/邏輯型) | 2 | true 或 false |
integer(整數型) | 2 | -32,768 ~ 32767 |
long(長整形) | 4 | -2,147,483,648 ~ 2,147,483,647 |
single () | 4 | 負數範圍: -3.402823e38 ~ -1.401298e-45 正數範圍: 1.401298e-45 ~ 3.402823e38 |
double () | 8 | 負數範圍: -1.797,693,134,862,32e308 ~ -4.940,656,458,412,47e-324 正數範圍: 4.940,656,458,412,47e-324 ~ 1.797,693,134,862,32e308 |
currency (變比整形 / 貨幣類型) | 8 | -922,337,203,685,477.5808 ~ 922,337,203,685,477.5807 |
decimal(十進制型) | 14 | 沒有小數點時: /-79,228,162,514,264,337,593,543,950,335 有小數點時: /-7.922,816,251,426,433,759,354,395,033,5 最小的非零值: /-0.000,000,000,000,000,000,000,000,000,1 |
date(時間日期型) | 8 | 100 年 1 月 1 日 ~ 9999 年 12 月 31 日 |
object(對象型) | 4 | 任何 object 引用 |
string (變長) | 10 | 長度從 0 到 大約 20 億 |
string (定長) | 10 | 長度從 1 到大約 65,400 |
variant (數字) | 16 | 任何數字值,最大可達 double 的範圍 |
variant (字元) | 22 | 與字元串長度,變長 string 有相同的範圍 |
用戶自定義變數 | - | - |
包含一的 variant 比單獨的一個數組需要多 12 個位元組。
相關單位
b與bit
數據存儲是以“位元組”(byte)為單位,數據傳輸大多是以“位”(bit,又名“比特”)為單位,一個位就代表一個0或1(即二進制),每8個位(bit,簡寫為b)組成一個位元組(byte,簡寫為b),是最小一級的信息單位。
b與ib
1kib(kibibyte)=1024byte
1kb(kilobyte)=1000byte
1mib(mebibyte)=1048576byte
1mb(megabyte)=1000000byte
生產商是以gb(,即10的3次方=1000,如1mb=1000kb)計算的,而電腦()是以gib(2進制,即2的10次方, 如1mib=1024kib)計算的,但是國內用戶一般理解為1mib=1m=1024 kb, 所以為了便於中文化的理解,翻譯mib為mb也是可以的。
同樣根據廠商與用戶對於1mb大小的不同理解,所以好多160g的硬碟實際容量按計算機實際的1mib=1024kb算都不到160g,這也可以解釋為什麼新買的硬碟“缺斤短兩”並沒有它所標示的那么大。
數據類型
byte數據類型(位元組型)用一個位元組(byte)儲存,可區別256個數字,取值範圍:0到255。 byte是從0-255的無符號類型,所以不能表示負數。具體參照。
語言字元
效果等同於 unsigned char型
typedef unsigned char byte
定義一種新類型byte,它其實就是unsigned char
在vc 中,byte型數據的定義包含在windows.h頭檔案中,調用byte需要添加代碼#include
而在java中,byte是一個關鍵字
表示聲明了一個整形常量在內容中占用一個位元組
取值範圍是-128~127
易混概念辨析
字
在計算機的、中,通常都是以字為單位進行傳送的。字出現在不同的地址其含義是不相同。例如,送往控制器去的字是指令,而送往去的字就是一個數。
字長
位元組
位元組是指一小組相鄰的碼。通常是8位作為一個位元組。它是構成信息的一個小單位,並作為一個整體來參加操作,比字小,是構成字的單位。
在中,通常用多少位元組來表示的存儲容量。
例如,在c 的表示中,通常為1個位元組,為4個位元組,為8個位元組。
理解編碼的關鍵,是要把的概念和位元組的概念理解準確。這兩個概念容易混淆,我們在此做一下區分:
概念描述 舉例
人們使用的記號,抽象意義上的一個。 '1', '中', 'a', '$', '¥' ……
位元組計算機中存儲數據的單元,一個8位的,是一個很具體的。0x01, 0x45, 0xfa……
字元串
在中,如果“”是以編碼形式存在的,一個字元可能使用一個位元組或多個位元組來表示,那么我們稱這種字元串為字元串或者多位元組字元串。如,"中文123" (占8位元組,包括一個隱藏的\0)。
字元集
對於ansi編碼方式,存在不同的(charset)。同樣的位元組序列,在不同的下表示的字元不一樣。要正確解析一個ansi串,還要選擇正確的,否則就可能導致所謂的現象。不同語言版本的,都有一個默認的。在不指定的情況下,系統會使用此字元集來解析ansi字元串。也就是說,如果我們在簡體中文版的windows下打開了一個由日文保存的ansi文本檔案(僅包含ansi串的文本檔案),我們看到的將是。但是,如果我們使用之類的帶編碼選擇的打開此檔案,並且選擇正確的,我們將可以看到它的原貌。注意:簡體中文中的繁體字和字元集中的繁體字,編碼不一定相同(事實證明,似乎是完全不同)。
每個都有一個唯一的編號,稱為(code page)。簡體中文(gb2312)的代碼頁為936,而系統默認的代碼頁為0,它表示根據系統的語言設定來選擇一個合適的字元集。
unicode
串在中,如果“字元”是以在unicode中的序號存在的,那么我們稱這種字元串為unicode字元串或者寬位元組字元串。在unicode中,每個都占兩個位元組。如,"中文123"(占10位元組)。
unicode和ansi的區別就相當於內的“”和“”的區別。
由於不同ansi編碼所規定的標準是不相同的(不同),因此,對於一個給定的多位元組字元串,我們必須知道它採用的是哪一種字元集則,才能夠知道它包含了哪些“字元”。而對於unicode串來說,不管在什麼環境下,它所代表的“字元”內容總是不變的。unicode 有著統一的標準,它定義了世界上絕大多數的的編碼,使得拉丁文、數字、簡體中文、繁體中文、日文等都能以同一種編碼方式保存。