字节

来源:互联网 发布:java人机猜拳游戏代码 编辑:程序博客网 时间:2024/05/01 12:06

百科名片

字节(Byte)是计算机信息技术用于计量存储容量和传输容量的一种计量单位,一个字节等于8位二进制数。



目录

简介
换算
容易混淆的概念
  1. 字长
  2. 字节
  3. 字符串
  4. 字符集和代码页
  5. UNICODE
数据类型字节型
C语言中的字符类型
展开
简介
换算
容易混淆的概念
  1. 字长
  2. 字节
  3. 字符串
  4. 字符集和代码页
  5. UNICODE
数据类型字节型
C语言中的字符类型
展开


编辑本段简介

  字节(Byte 发音:/‘bait/):字节是通过网络传输信息(或在硬盘或内存中存储信息)的单位。网络上的所有信息都是以“位”(bit)为单位传递的,一个位就代表一个0或1,每8个位(bit)组成一个字节(Byte)。

编辑本段换算

  在ASCII码中,一个英文字母(不分大小写)占一个字节的空间,一个中文汉字占两个字节的空间。
  符号:英文标点占一个字节,中文标点占两个字节。举例:英文句号“.”占1个字节的大小,中文句号“。”占2个字节的大小。
  一个二进制数字序列,在计算机中作为一个数字单元,一般为8位二进制数,换算为十进制。最小值0,最大值255。如一个ASCII码就是一个字节,此类单位的换算为:
  其中1024=2^10 ( 2 的10次方),
  1KB(Kilobyte 千字节)=1024B,
  1MB(Megabyte兆字节 简称“兆”)=1024KB,
  1GB(Gigabyte吉字节 又称“千兆”)=1024MB,
  1TB(Trillionbyte 万亿字节太字节)=1024GB,
  1PB(Petabyte 千万亿字节拍字节)=1024TB,
  1EB(Exabyte 百亿亿字节艾字节)=1024PB,
  1ZB(Zettabyte 十万亿亿字节 泽字节)= 1024 EB,
  1YB(Yottabyte 一亿亿亿字节 尧字节)= 1024 ZB,
  1BB(Brontobyte 一千亿亿亿字节)= 1024 YB
  注意:MiB和MB,KiB和KB等的区别:
  1KiB(kibibyte)=1024byte
  1KB(kilobyte)=1000byte
  1MiB(mebibyte)=1048576byte
  1MB(megabyte)=1000000byte
  这是因为硬盘生产商是以GB(十进制,即10的3次方=1000,如1MB=1000KB)计算的,而电脑(操作系统)是以GiB(2进制,即2的 10次方, 如1MiB=1024KB)计算的,但是国内用户一般理解为1MB=1024 KB, 所以为了便于中文化的理解,翻译MiB为MB也是可以的。
  同样根据硬盘厂商与用户对于1MB大小的不同理解,所以好多160G的硬盘实际容量按计算机实际的1MB=1024KB算都不到160G,这也可以解释为什么新买的硬盘“缺斤短两”并没有它所标示的那么大。
  注:10TB大约等于一个人脑的存储量。

编辑本段容易混淆的概念

  在计算机中,一串数码作为一个整体来处理或运算的,称为一个计算机字,简称字。字通常分为若干个字节(每个字节一般是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 有着统一的标准,它定义了世界上绝大多数的字符的编码,使得拉丁文、数字、简体中文、繁体中文、日文等都能以同一种编码方式保存。

编辑本段数据类型字节型

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

编辑本段C语言中的字符类型

  效果等同于 unsigned char型
  typedef unsigned char BYTE
  定义一种新类型BYTE,它其实就是unsigned char
原创粉丝点击