字节 - 基础知识

字节(Byte /bait/ n. [C])是 计算机 信息技术用于计量存储容量的一种计量单位,也表示一些计算机编程语言中的数据类型和语言字符。
中文名
字节
外文名
Byte
简    写
B
相关概念
iB;位(b,bit)
 

换算

字符与字节

ASCII码:一个英文字母(不分大小写)占一个字节的空间,一个中文 汉字占两个字节的空间。一个 二进制数字序列,在 计算机中作为一个数字单元,一般为8位二进制数,换算为 十进制。最小值0,最大值255。如一个ASCII码就是一个字节。
UTF-8编码:一个英文 字符等于一个字节,一个中文(含繁体)等于三个字节。
Unicode编码:一个英文等于两个字节,一个中文(含繁体)等于两个字节。
符号:英文 标点占一个字节,中文标点占两个字节。举例:英文句号“.”占1个字节的大小,中文句号“。”占2个字节的大小。

不同数量级间

数据存储是以10 进制表示,数据传输是以2进制表示的,所以1KB不等于1000B。
1KB=1024B;1MB=1024KB=1024×1024B。其中1024=2 10。
1B(byte,字节)= 8 bit(见下文);
1KB(Kibibyte, 千字节)=1024B= 2^10 B;
1 MB(Mebibyte, 兆字节,百万字节,简称“兆”)=1024KB= 2^20 B;
1 GB(Gigabyte, 吉字节,十亿字节,又称“千兆”)=1024MB= 2^30 B;
1 TB(Terabyte,万亿字节, 太字节)=1024GB= 2^40 B;
1 PB(Petabyte,千万亿字节, 拍字节)=1024TB= 2^50 B;
1 EB(Exabyte,百亿亿字节, 艾字节)=1024PB= 2^60 B;
1 ZB(Zettabyte,十万亿亿字节, 泽字节)= 1024EB= 2^70 B;
1 YB(Yottabyte,一亿亿亿字节, 尧字节)= 1024ZB= 2^80 B;
1 BB(Brontobyte,一千亿亿亿字节)= 1024YB= 2^90 B;
1NB(NonaByte,一百万亿亿亿字节) = 1024 BB = 2^100 B;
1DB(DoggaByte,十亿亿亿亿字节) = 1024 NB = 2^110 B;[1]  

存储类型

以下以Visual Basic为例,讲解各种数据类型所占字节。
数据类型 储存空间大小(单位:字节)范围
Byte(字节型)10 - 255
Boolean(布尔型/逻辑型)2True 或 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(时间日期型)8100 年 1 月 1 日 ~ 9999 年 12 月 31 日
Object(对象型)4任何 Object 引用
String (变长)10长度从 0 到 大约 20 亿
String (定长)10长度从 1 到大约 65,400
Variant (数字)16任何数字值,最大可达 Double 的范围
Variant (字符)22与字符串长度,变长 String 有相同的范围
用户自定义变量--
  
任何数据类型的 数组都需要 20 个 字节的内存空间,加上每一数组维数占 4 个字节,再加上数据本身所占用的空间。数据所占用的内存空间可以用 数据元数目乘上每个元素的大小加以计算。例如,以 4 个 2 字节之 Integer 数据元所组成的一维 数组中的数据,占 8 个字节。这 8 个 字节加上额外的 24 个字节,使得这个 数组所需总内存空间为 32 个字节。
包含一 数组的 Variant 比单独的一个数组需要多 12 个 字节。[2]  

相关单位

B与bit

数据存储是以“字节”(Byte)为单位,数据传输是以大多是以“位”(bit,又名“比特”)为单位,一个位就代表一个0或1(即二进制),每8个位(bit,简写为b)组成一个字节(Byte,简写为B),是最小一级的信息单位。

B与iB

1KB(Kibibyte)=1024byte
1KiB(Kilobyte)=1000byte
1MB(Mebibyte)=1048576byte
1MiB(Megabyte)=1000000byte
硬盘生产商是以GiB( 十进制,即10的3次方=1000,如1MiB=1000KB)计算的,而电脑( 操作系统)是以GB(2进制,即2的10次方, 如1MB=1024KB)计算的,但是国内用户一般理解为1MiB=1M=1024 KB, 所以为了便于中文化的理解,翻译MiB为MB也是可以的。
同样根据 硬盘厂商与用户对于1MB大小的不同理解,所以好多160G的硬盘实际容量按 计算机实际的1MB=1024KB算都不到160G,这也可以解释为什么新买的硬盘“缺斤短两”并没有它所标示的那么大。
注:10TB大约等于一个人脑的 存储量
[3]  

数据类型

Byte数据类型(字节型)用一个字节(Byte)储存,可区别256个数字,取值范围:0到255。 Byte是从0-255的无符号类型,所以不能表示负数。具体参照 数据类型

语言字符

效果等同于 unsigned char型
typedef unsigned char BYTE
定义一种新类型BYTE,它其实就是unsigned char
在VC++中,byte型数据的定义包含在windows.h头文件中,调用byte需要添加代码#include <windows.h>
而在java中,byte是一个关键字
表示声明了一个整形常量在内容中占用一个字节
取值范围是-128~127

易混概念辨析

计算机中,一串数码作为一个整体来处理或运算的,称为一个 计算机字,简称字。字通常分为若干个字节(每个字节一般是8位)。在 存储器中,通常每个 单元存储一个字,因此每个字都是可以 寻址的。字的长度用位数来表示。
计算机运算器控制器中,通常都是以字为单位进行传送的。字出现在不同的地址其含义是不相同。例如,送往控制器去的字是指令,而送往 运算器去的字就是一个数。

字长

计算机的每个字所包含的位数称为 字长。根据 计算机的不同, 字长有固定的和可变的两种。固定 字长,即字长度不论什么情况都是固定不变的;可变字长,则在一定范围内,其长度是可变的。
计算的 字长是指它一次可处理的 二进制数字的数目。 计算机处理数据的速率,自然和它一次能加工的位数以及进行运算的快慢有关。如果一台 计算机的字长是另一台计算机的两倍,即使两台计算机的速度相同,在相同的时间内,前者能做的工作是后者的两倍。
一般地,大型 计算机的字长为32- 64位小型计算机为12-32位,而 微型计算机为4-16位。 字长是衡量 计算机性能的一个重要因素。

字节

字节是指一小组相邻的 二进制数码。通常是8位作为一个字节。它是构成信息的一个小单位,并作为一个整体来参加操作,比字小,是构成字的单位。
微型计算机中,通常用多少字节来表示 存储器的存储容量。
例如,在C++的 数据类型表示中,通常 char为1个字节, int为4个字节, double为8个字节。
理解编码的关键,是要把 字符的概念和字节的概念理解准确。这两个概念容易混淆,我们在此做一下区分:
概念描述 举例
字符人们使用的记号,抽象意义上的一个 符号。 '1', '中', 'a', '$', '¥' ……
字节 计算机中存储数据的单元,一个8位的 二进制数,是一个很具体的 存储空间。0x01, 0x45, 0xFA……

字符串

内存中,如果“ 字符”是以 ANSI编码形式存在的,一个字符可能使用一个字节或多个字节来表示,那么我们称这种字符串为 ANSI字符串或者多字节字符串。如,"中文123" (占8字节,包括一个隐藏的\0)。

字符集

对于ANSI编码方式,存在不同的 字符集(Charset)。同样的字节序列,在不同的 字符集下表示的字符不一样。要正确解析一个ANSI 字符串,还要选择正确的 字符集,否则就可能导致所谓的 乱码现象。不同语言版本的 操作系统,都有一个默认的 字符集。在不指定 字符集的情况下,系统会使用此字符集来解析ANSI字符串。也就是说,如果我们在简体中文版的Windows下打开了一个由日文 操作系统保存的ANSI文本文件(仅包含ANSI 字符串的文本文件),我们看到的将是 乱码。但是,如果我们使用 Visual Studio之类的带编码选择的 文本编辑器打开此文件,并且选择正确的 字符集,我们将可以看到它的原貌。注意:简体中文 字符集中的繁体字和 繁体中文字符集中的繁体字,编码不一定相同(事实证明,似乎是完全不同)。
每个 字符集都有一个唯一的编号,称为 代码页(Code Page)。简体中文(GB2312)的代码页为936,而系统默认 字符集的代码页为0,它表示根据系统的语言设置来选择一个合适的字符集。

Unicode

字符串在 内存中,如果“字符”是以在Unicode中的序号存在的,那么我们称这种字符串为Unicode字符串或者宽字节字符串。在Unicode中,每个 字符都占两个字节。如,"中文123"(占10字节)。
Unicode和ANSI的区别就相当于 输入法内的“ 全角”和“ 半角”的区别。
由于不同ANSI编码所规定的标准是不相同的( 字符集不同),因此,对于一个给定的多字节字符串,我们必须知道它采用的是哪一种字符集则,才能够知道它包含了哪些“字符”。而对于Unicode 字符串来说,不管在什么环境下,它所代表的“字符”内容总是不变的。Unicode 有着统一的标准,它定义了世界上绝大多数的 字符的编码,使得拉丁文、数字、简体中文、繁体中文、日文等都能以同一种编码方式保存。

数据类型

Uninterpreted
 位元 字节 Trit Tryte
 Word   
 
数值
 整数 Fixed-point 浮点数 Rational
 Complex Bignum Interval 
 
文本
 字符 字符串  
 
指针
 物理地址 Reference  
 
组合
 Algebraic data type 数组 Associative array Class
 List Object Option type Product
 Record Set Union 
 
其他
 布尔型 Bottom type Collection Enumerated type
 异常 First-class function Opaque data type Recursive data type
 信号标 字串流 Top type Type class
 Unit type Void  
 
相关议题
 抽象资料型别 数据结构 Interface Kind
 原始型别 Subtyping Template Type constructor
 Parametric polymorphism   
 

转载于:https://www.cnblogs.com/viewcozy/p/4857503.html

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值