zoukankan      html  css  js  c++  java
  • IT名词备忘录——汇编

    32位

    计算机中的位数指的是CPU一次能处理的最大位数。32位计算机的CPU一次最多能处理32位数据,例如它的EAX寄存器就是32位的,当然32位计算机通常也可以处理16位和8位数据。在Intel由16位的286升级到386的时候,为了和16位系统兼容,它先推出的是386SX,这种CPU内部预算为32位,外部数据传输为16位。直到386DX以后,所有的CPU在内部和外部都是32位的了。

    bit位

    二进制数系统中,每个0或1就是一个位(bit),位是内存的最小单位。

    byte字节

    字节是由8个位所组成,可代表一个字符(A~Z)、数字(0~9)、或符号(,.?!%&+-*/),是内存储存数据的基本单位。

      1 byte = 8 bit

      1 KB = 1024 bytes =210 bytes

      1 MB = 1024 KB = 220 bytes

      1 GB = 1024 MB = 230 bytes

    1个字(word)是16位,是2个字节
    1个字节(byte)是8位,是8bit

    ASCII码

    鉴于信息交换的重要及为统一文字符号的编码标准,让不同厂牌机型的计算机皆能使用同一套标准化的信息交换码,于是美国国家标准局特别制定了ASCII码(America Standard Code for Information Interchange,美国信息交换标准码),作为数据传输的标准码。早期使用7 个位来表示英文字母、数字0~9及其它符号,现在则使用8个位,共可表示256个不同的文字与符号,为目前各计算机系统中使用最普遍也最广泛的英文标准码,相对于ASCII code,中文系统使用最广泛的内码则为Big-5码。

    ANSI编码

    Unicode和ANSI都是字符代码的一种表示形式。  
    为使计算机支持更多语言,通常使用 0x80~0xFF 范围的 2 个字节来表示 1 个字符。比如:汉字 '中' 在中文操作系统中,使用 [0xD6,0xD0] 这两个字节存储。
    不同的国家和地区制定了不同的标准,由此产生了 GB2312, BIG5, JIS 等各自的编码标准。这些使用 2 个字节来代表一个字符的各种汉字延伸编码方式,称为 ANSI 编码。在简体中文系统下,ANSI 编码代表 GB2312 编码,在日文操作系统下,ANSI 编码代表 JIS 编码。
    不同 ANSI 编码之间互不兼容,当信息在国际间交流时,无法将属于两种语言的文字,存储在同一段 ANSI 编码的文本中。

    Unicode码

    Unicode使任何语言的字符都可以为机器更容易的接受,unicode由UC(UNICODE协会)管理并接受其技术上的修改。包括JAVA、LDAP、XML这样的技术标准中均要求得到UNICODE的支持。UNICODE的字符被成为代码点(CODE POINTS),用U后面加上XXXX来表示,其中,X为16进制的字符。

    对于英文来说,ascii码 0-127就足以代码所有字符,对于中文而言,则必须使用两个字节(byte)来代表一个字符,具第一个字节必须大于127(所以我们有许程序判断中文都是以ascii码大于127作为条件)。以上用两个字节来表示一个中文的方式,在习惯上称为双字节(即DBCS: Double-Byte Character Set),而相对之下,英文的字符码就称为单字节SBCS(Single-Byte Character Set)。

    虽然双字节(DBCS)足以解决中英文字符混合使用情况,但对于不同字符系统而言,必须经过字符码转换,非常麻烦。例如:中英文混合情况,日文,韩文等等。为解决这个问题,国际标准组织于1984年4月成立ISO/IEC JTC1/SC2/WG2工作组。针对各国文字、符号进行统一性编码。1991年美国跨国公司成立Unicode Consortium。并于1991年10月与WG2达成协议。采用同一编码字集。目前Unicode是采用16位编码体系。其字符集内容与ISO10646的BMP(Basic Multilingual Plane)相同。Unicode于1992年6月通过DIS(Draf International Standard)。目前版本V2.0于1996公布。内容包含符号6811个。汉字20902个。韩文拼音11172个。造字区6400个。保留20249个。共计65534个。

    随着国际互联网的迅速发展。要求进行数据交换的需求越来越大。不同的编码体系越来越成为信息交换的障碍。而且多种语言共存的文档不断增多。单靠代码页已很难解决这些问题。于是unicode应运而生。

    Unicode有双重含义。首先unicode是对国际标准ISO/IEC10646编码的一种称谓(ISO/IEC10646是一个国际标准。亦称大字符集。它是ISO于1993年颁布的一项重要国际标准。其宗旨是全球所有文种统一编码)。另外它又是由美国的HP、Microsoft、IBM、Apple等大企业组成的联盟集团的名称。成立该集团的宗旨就是要推进多文种的统一编码。

    Unicode同现在流行的代码页最显著不同点在于:UNICODE是两字节的全编码。对于ASCII字符它也使用两字节表示。代码页是通过高字节的取值范围来确定是ASCII字符。还是汉字的高字节。如果发生数据损坏。某处内容破坏。则会引起其后汉字的混乱。UNICODE则一律使用两个字节表示一个字符。最明显的好处是它简化了汉字的处理过程。

    Unicode使用平面来描述编码空间。每个平面分为256行。256列。相对于两字节编码的高低两个字节。

    Unicode的第一个平面。称为Basic Multilingual Plane(基本多文种平面)。简称BMP。由于BMP仅用两个字节表示。所以倍受青睐。

    Unicode的最初目标。是用1个16位的编码来为超过65000字符提供映射。但这还不够。它不能覆盖全部历史上的文字。也不能解决传输的问题(implantation head-ache's)。尤其在那些基于网络的应用中。因此。Unicode用一些基本的保留字符制定了三套编码方式。它们分别是UTF-8,UTF-16和UTF-32。正如名字所示。在UTF-8中。字符是以8位序列来编码的。用一个或几个字节来表示一个字符。这种方式的最大好处。是UTF-8保留了ASCII字符的编码做为它的一部分。例如。在UTF-8和ASCII中。“A”的编码都是0x41.UTF-16和UTF-32分别是Unicode的16位和32位编码方式。考虑到最初的目的。通常说的Unicode就是指UTF-16。

    多年来。计算机普遍采用美国信息交换标准代码(American Standard Code for Information Interchange,简称ASCII码)来表示字符。这些字符可以是字母。数字。标点符号和控制符。用这种编码来表示英文在内的字符不成问题的。但要表示其它语言文字如。阿拉伯文。中文。日文。维文。哈文…必须进行扩充。在1987年。Xerox Palo Alto研究中心的Joe Becker和Lee Collins。以及Apple公司的Mark Davis试图研究一种适用于多文种处理的字符编码。这种编码很快就得到了许多大公司的支持。这些公司都派代表参加Unicode研究组。Unicode的研究得到了较快的进展。由于Unicode集团的成员都是世界上的主要系统及软件制造商。所以Unicode很快就成为事实上的工业标准。

    基于Unicode的系统允许使用65000个不同的字符。足以善盖世界所有语言的所有字母。外加数千种符号。

    其中。General Scripts区单独收录了19种语言文字。包括ASCII,Latin1,Greek,Cyrillic,Armenian,Hedrew,Arabic,Devanagari,Bengali ,Gurmukhi,Gujarati,Oriya,Tamil,Telugu,Kannada,Malayalam,Thai,Lao,Tibetan,Georgian等语言文字之外。还包括汉语。日语和朝鲜语中的所有大量字符。

    Unicode是一种定长的2B多文种字符集编码。它试图善盖现有的有关国家和地区的标准。包括GB2312,CNS11643,JIS 0208和KSC 5601等。Unicode可以表示混合文字资料。也可以保证以前的ISO 10646。

    Unicode的特点是:

    不管哪一国的字符码均以两个Byte表示,例如"A"在Unicode则是16进制 41和00的组合,即4100,高位41(转换为Ascii码即是65=A),Windows NT/2000以Unicode来表示字符集,例如你可以看到MS SQL Server中产生的SQL文件可以选择是以Unicode来保存还是以普通格式来保存,如果你以Unicode保存,则在95/98平台许多软件均无法正确读出其格式。

    Unicode很容易和ASCII兼容,ASCII前面加1个等于0的字节就是unicode字符了。

    同时你还可以注意到95/98中API定义,许多名称结尾是有一个A的,例如

    WriteProfileStringA

    而在NT/2000操作系统中,提供了两套API,另外一个命令是WriteProfileStringW,以W 结尾的API只适用于NT / 2000。(在NT中使用以W结尾的API函数效率比A结尾的要快,因为省去了Unicode和DBCS/SBCS的转换过程)

    这样我们经常要用到的判断字符串长度的函数,在NT和95/98下执行结果不同,如下:(下面代码适合于VB, ASP)

    95/98中:

    len("abc中国") 返回 7 (因为每个中文作为两个Ascii码来看)

    NT/2000中:

    len("abc中国") 返回 5 (因为每个字符都作为一个Unicode来看)

    UFT8

    UTF8是一种储存和传送的格式,如前所述,每个Unicode/UCS字符都以 2或4个bytes来储存,看看以下的比较:

    以"I am Chinese"为例
    用ANSI储存:12 Bytes
    用Unicode/UCS2储存:24 Bytes + 2 Bytes(header)
    用UCS4储存:48 Bytes + 4 Bytes(header)

    以"我是中国人"为例
    用ANSI储存:10 Bytes
    用Unicode/UCS2储存:10 Bytes + 2 Bytes(header)
    用UCS4储存:20 Bytes + 4 Bytes(header)

    由此可见直接以Unicode/UCS的原始形式来储存是一种极大的浪费,而且也不利于互联网的传输。

    有见及此,Unicode/UCS的压缩形式--UTF8出现了,套用官方网站的首句话『UTF-8 stands for Unicode Transformation Format-8. It is an octet (8-bit) lossless encoding of Unicode characters.』,由于UTF也适用于编码UCS,故亦可称为『UCS transformation formats (UTF)』

    UTF8是以8bits即1Bytes为编码的最基本单位,当然也可以有基于16bits和32bits的形式,分别称为UTF16和UTF32,但目前用得不多,而UTF8则被广泛应用在文件储存和网络传输中。

    UCS

    国际标准 ISO 10646 定义了通用字符集 (Universal Character Set, UCS)。UCS 是所有其他字符集标准的一个超集。它保证与其他字符集是双向兼容的. 就是说, 如果你将任何文本字符串翻译到 UCS格式,然后再翻译回原编码,你不会丢失任何信息。

    UCS 不仅给每个字符分配一个代码,而且赋予了一个正式的名字。表示一个 UCS 或 Unicode 值的十六进制数,通常在前面加上 "U+",就象 U+0041 代表字符"拉丁大写字母A"。UCS 字符 U+0000 到 U+007F 与 US-ASCII(ISO 646) 是一致的,U+0000 到 U+00FF 与 ISO 8859-1(Latin-1) 也是一致的。从 U+E000 到 U+F8FF,已经 BMP 以外的大范围的编码是为私用保留的。

    汇编语言中有好几个段,一类是一段(比如代码段)段内有具体的内容,比如一个变量,每个这样的资源都有一个自己位置的地址,段地址是每个段的开始,而找比如这个变量就需要用偏移地址。段地址是指代码段在内存中的地址,偏移量是指代码段中某一个语句相对于段地址的偏移量。物理地址=段地址*10H+偏移地址(10H = 16D),也就是说段地址左移4位(2进制),后再加偏移地址就是物理地址;3017:000A的物理地址是3017H*10H+000AH=3017AH。

    8086及之前的CPU寻址范围为1MB,80386及之后的CPU寻址范围为4GB

    B - Binary           二进制
    O - Octal            八进制
    D - Decimal        十进制
    H - Hexadecimal 十六进制

  • 相关阅读:
    CodeForces 659F Polycarp and Hay
    CodeForces 713C Sonya and Problem Wihtout a Legend
    CodeForces 712D Memory and Scores
    CodeForces 689E Mike and Geometry Problem
    CodeForces 675D Tree Construction
    CodeForces 671A Recycling Bottles
    CodeForces 667C Reberland Linguistics
    CodeForces 672D Robin Hood
    CodeForces 675E Trains and Statistic
    CodeForces 676D Theseus and labyrinth
  • 原文地址:https://www.cnblogs.com/kex1n/p/2286562.html
Copyright © 2011-2022 走看看