1. 10进制,2进制,8进制,16进制 基础
2进制就是每一位用0,1表示;8进制就是每一位用0,1,2,3,4,5,6,7表示;16进制就是每一位用0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F表示
各种进制的转换:
2进制0000 0001 0010 0011 0100 0101 0110 0111
16进制0 1 2 3 4 5 6 7
2进制1000 1001 1010 1011 1100 1101 1110 1111
16进制8 9 A(10) B(11) C(12) D(13) E(14) F(15)
2进制 000 001 010 011 100 101 110 111
8进制 0 1 2 3 4 5 6 7
2进制转10进制:
16进制0 1 2 3 4 5 6 7
2进制1000 1001 1010 1011 1100 1101 1110 1111
16进制8 9 A(10) B(11) C(12) D(13) E(14) F(15)
2进制 000 001 010 011 100 101 110 111
8进制 0 1 2 3 4 5 6 7
2进制转10进制:
比如说10101010。01转10进制就是整数部分从低位往高位乘2的方 就是
0X2的0次方+1X2的1次方+0X2的2次方+1X2的3次方+0X2的4次方+1X2的5次方+0X2的6次方+1X2的7次方
小数部分就是从高位往低位乘2的负数次方
0X2的-1次方+1X2的-2次方
然后把整数部分和部分求得的结果相加就行了
8进制转10进制:
同2进制转10进制
只不过把乘2的方改成了乘8的方
其他相同
16进制转10进制:
同2进制转10进制
把乘2的方改成乘16的方
在16进制中A=10 B=11 C=12 D=13 E=14 F=15
0X2的0次方+1X2的1次方+0X2的2次方+1X2的3次方+0X2的4次方+1X2的5次方+0X2的6次方+1X2的7次方
小数部分就是从高位往低位乘2的负数次方
0X2的-1次方+1X2的-2次方
然后把整数部分和部分求得的结果相加就行了
8进制转10进制:
同2进制转10进制
只不过把乘2的方改成了乘8的方
其他相同
16进制转10进制:
同2进制转10进制
把乘2的方改成乘16的方
在16进制中A=10 B=11 C=12 D=13 E=14 F=15
而在表示上,为了区分2进制,8进制,16进制和10进制
8进制前面加一个字母O(是大写字母O不是数字0)
16进制在前面加上OX 或者 后面加 H
例如:30的8进制写成 O36 而30的16进制写出 OX1D 或者1DH
2. 字符和字节的区别
1个字节等于8个bit位,每个bit位又0/1两种状态也就是说一个字节可以表示256个状态,计算机里用字节来作为最基本的存储单位。一般来说,英文状态下一个字母或数字(称之为字符)占用一个字节,一个汉字用两个字节表示。(只是在ASCII下这样,Unicode不是)
3. ANSI,ASCII,Unicode,GB-2312,UCS-2,UTF-8关系
这些编码标准之所以存在,是因为:
很久很久以前,有一人,他们决定用8个可以开合的晶体管来组合成不同的状态,以表示世界上的万物。他们看到8个开关状态是好的,于是他们把这称为“字节”
再后来,他们又做了一些可以处理这些字节的机器,机器开动了,可以用字节来组合出很多状态,状态开始变来变去。他们看到这样是好的,于是它们就把这机器称为“计算机”。
开始计算机只是在美国使用。八位的字节一共可以组合出256(2的8次方)种不同的状态。(最早的ASCII)
他们把其中编号从0开始到31的32种状态分别规定了特殊的用途,一但终端、打印机遇到了这些被传过来的字节时,就要做一些约定的动作。遇上0x10,终端就换行,遇上0x07, 终端就向人们嘟嘟叫,遇上0x1B, 打印机就打印反白的字,或者终端将使用用彩显示字母。他们看到这样很好,于是就把这些编号0x20以下的状态称为“控制码”,这些编号称为字符编码。这样就出现了编码!
ANSI : 是American National Standards Institute 的缩写, 意思是美国国际标准学会, 也就是制定国际标准的组织
ASCII: 是 "美国信息交换标准码 "的英文缩写(American Standard Code Information Interchange), 从0-255, 比如 "A "的AscII值是65, "B "的AscII值是66,“a“的AscII值是97。
ANSI 和 ASCII联系就是:ASCII标准是ANSI这个组织制定的!
ASCII ,GB2312 ,Unicode 来由:
而ASCII是最早美国ANSI组织制定的编码,用了256位的127位表示英文字母和一些符号,但是很多国家并不使用英文,有许多文字是ASCII无法表示的,为了可以让计算机保存这些的文字,他们决定采用ASCII编码里第127号之后的空位来表示这些新的字母和符号,还加入了很多画表格时需要用到的横线、竖线、交叉等图形符号,一直把序号编到了八位字节可以表示的最后一个数字255。从128到255这一区域的字符集被称“扩展字符集”。但是随着中国强大,中文只就需要加入到计算机里,所以中国自己编制了数字转unicode编码GB2312(后来到最高级的GBK18030)编码,把128后到255位的拿来用了。又因为汉字就有6000多个,所以根本不够用,于是,我们把那些编码在127之后的奇异符号(扩展字符集)直接取消掉,并做出规定:一个编码小于127的字符与原来ASCII表示的意义相同,但当两个编码大于127的字符连在一起时,就表示一个汉字,前面的一个字节(高字节)取值0xA1~0xF7,后面一个字节
(低字节)取值0xA1~0xFE,这样用两个字节就可以组合出大约7000多个简体汉字了。也就是两个字节表示一个汉字了。后来,干脆把127前的也改成两个字节表示,这就是“全角”了。相对的,原来编码在127以下的那些只用一个字节表示的字符就叫“半角”字符了。
但是,这样全球太多国家,太多语言了,每个国家都编一套,不现实!于是ISO(国际标谁化组织)来了。用Unicode编码来统一全球,但是如果还用8位一个字节这样不够用,于是,Unicode直接用2个字节代表一个字符,也就是16位!对于ASCII里的那些“半角”字符,UniCode保持其原编码不变,只是将其长度由原来的8位扩展为16位,而其他国家的语言文字则全部重新统一编码。由于“半角”英文符号只需要用到低8位,所以其高8位永远是0,因此这种大气的方案在保存英文文本时会多浪费一倍的存储空间。
UCS-2,USC-4 :
Unicode是为整合全世界的所有语言文字而诞生的。任何文字在Unicode中都对应一个值,这个值称为代码点(code point)。代码点的值通常写成 U+ABCD 的格式。而文字和代码点之间的对应关系就是UCS-2(Universal Character Set coded in 2 octets)。顾名思义,UCS-2是用两个字节来表示代码点,其取值范围为 U+0000~U+FFFF。USC-4就是用四个字节表
示代码点,怕以后不够用,才增加到4位,现在是两个字节
为何每个Unicode字符 写成 U+ABCD 的格式呢? 因为,U就是Unicode编码,而ABCD是这样的,因为Unicode是用两个字节,也就是16位(一个字节8位)来表示一个字符,那么就等于可以有2的16次方=65536个不同字符(因为计算机只有0,1也就是开头所表达的希望用开,关两种状态表示地球上的东西,所为每个位只有0和1)。也就是Unicode可以表示65536种字符,而写成ABCD是用四个16进制的数字来表示,因为16的4次方=65536,那么就等于改为16进制表示,不然就要ABCDEFGHIJKLMNOP ,16未来表示一个字符,这样太麻烦了。
UTF-16,UTF-32,UTF-8 :
要注意,UCS-2和UCS-4只规定了代码点和文字之间的对应关系,并没有规定代码点在计算机中如何存储。规定存储方式的称为UTF(Unicode Transformation Format),其中应用较多的就是UTF-16和UTF-8了。UTF也是网络传输编码的方式。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论