大家好,欢迎来到IT知识分享网。
指数
指数、幂:乘方、次方。a的n次方,a的n次幂,a^n。数学计算为n自乘m次。其中n称作底数,m称作指数。
n^0= 1; n^1=1*n; n^2=1*n*n
科学计数法:a*(10^n),aEn。将一个比较大的数,计作一个自然数a乘以10的n次幂,其中1<=|a|<10。科学计数法,使得阅读更直观,避免出错。
因为十的乘方很容易计算,只需在后面加零即可,因此科学计数法借助此简化记录数的方式。在计算机中,二的乘方很有用。
对数
如果a^X=N,那么x就是以a为底,N的对数。计作log(a)N,其中a为底数,N为真数。
以10为底的对数,叫做常用对数(common logathimath),log(10)N 即 lgN。
以无理数e为底的对数,叫做自然对数(natrual logarithm),log(e)N即lnN。
e:我们都知道复利计息是怎么回事,就是利息也可以并进本金再生利息。但是本利和的多寡,要看计息周期而定,以年周期来算的话,可以一年只计息一次,也可以每半年计息一次,或者一季一次,一月一次,甚至一天一次;当然计息周期愈短,本利和就会愈高。有人因此而好奇,如果计息周期无限制地缩短,比如说每分钟计息一次,甚至每秒,或者每一瞬间(理论上来说),会发生什么状况?本利和会无限制地加大吗?答案是不会,本利和的值会稳定下来,趋近於一极限值,而e这个数就现身在该极限值当中,所以e可以定义成一个极限值,但是在那时候,根本还没有极限的观念,因此e的值应该是观察出来的,而不是用严谨的证明得到的。
当n→∞时,(1+1/n)^n的极限就是e。
阶乘
从1乘到n,称为n的阶乘。计作 n! = 1*2*3*…*(n-1)*n。
n! = (n-1)! * n;
等比数列
an = a * q^(n-1)
sn = a * (q^n – 1) / (q-1)
例如:数列,2^0 2^1 2^2 2^3 …. 2^(n-1),
即为 q = 2, a = 1的等比数列,其sn=2^n -1;
十六进制
在数学中是逢16进1的进位制,用0-9和A-F表示,这些数字称作16进制数字。
十进制数57,二进制数为,十六进制数为39。
16进制普遍应用在计算机领域,因为将4个bit化成16进制的数比较容易。
Unicode字符集及其编码实现
Unicode用数字 0x0~0x10FFFF 表示所有字符,所以最多可以容纳 1,114,112 个字符。
有人会说,Unicode不是两个字节表示字符的码?为什么数值可以到0x10FFFF,这不21位,两个半字节还多了吗?其实,这是混淆了Unicode的数值定义和实现,这根本就是两个概念,Unicode到底用几个字节表示,取决于其实现方式是UTF-8,UTF-16,还是UTF-32.
比如,“汉字”对应的Unicode值是0x6c49和0x5b57,而编码实现是:
char data_utf8[]={0xE6,0xB1,0x89,0xE5,0xAD,0x97};//UTF-8编码
char16_t data_utf16[]={0x6C49,0x5B57}; //UTF-16编码
char32_t data_utf32[]={0x00006C49,0x00005B57};//UTF-32编码
UTF-8是使用8-bit为单位,对Unicode进行编码的。特点是,对不同范围的字符使用不同长度的编码。
Unicode编码(十六进制)
|
UTF-8 字节流(二进制)
|
00000000 – 0000007F
|
0xxxxxxx
|
00000080 – 000007FF
|
110xxxxx 10xxxxxx
|
00000800 – 0000FFFF
|
1110xxxx 10xxxxxx 10xxxxxx
|
00010000 – 001FFFFF
|
11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
|
00 – 03FFFFFF | xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx |
0 – 7FFFFFFF | x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx |
UTF-8编码的最大长度是6个字节。
对于0x00-0x7F之间的字符,UTF-8编码与ASCII编码完全相同,用1个字节表示,首位为0。
对于0x80-0x7FF之间的字符,用2个字节表示,第一个字节前三位“110”为标志位,第二个字节前两位“10”为标志位。剩下的11位用来表示Unicode值(7FF最多11位)。
同样,UTF-8的3个字节,可以表示0x800-0xFFFF的Unicode(最多16位)。
UTF-8的4个字节,可以表示0x10000-0x001FFFFF的Unicode(最多21位)。
4个字节以内,已经包含了Unicode所有字符。
5、6个字节表示的已经是非Unicode编码范围,属于UCS-4 编码。早期UTF-8规范也可以达到6字节序列,不过2003年11月UTF-8 被 RFC 3629 重新规范,只能使用原来Unicode定义的区域, U+0000到U+10FFFF。根据规范,这些字节值将无法出现在合法 UTF-8序列中。
例1:“汉”字的Unicode编码是0x6C49。0x6C49在0x0800-0xFFFF之间,使用用3字节模板了:1110xxxx 10xxxxxx 10xxxxxx。将0x6C49写成二进制是:0110 1100 0100 1001, 用这个比特流依次代替模板中的x,得到: ,即E6 B1 89。
例2:Unicode编码0x20C30在0x010000-0x10FFFF之间,使用用4字节模板了:11110xxx 10xxxxxx 10xxxxxx 10xxxxxx。将0x20C30写成21位二进制数字(不足21位就在前面补0):0 0010 0000 1100 0011 0000,用这个比特流依次代替模板中的x,得到: ,即F0 A0 B0 B0。
UTF-8有两个好处:
1. 1字节字符、2字节字符、3字节字符……的首字节标志位不同,这样可以很清楚的区分一个字节属于1字节字符还是2字节字符,如果一个字节流传输中出现错误,也不会错位,只影响部分字符,根据标志位,很容易找到下个正确字符。
2. 兼容ASCII码,英美字符用UTF-8可以一个字节表示,所以,www组织选用UTF-8作为推荐编码格式。2007年,在互联网上,UTF-8格式已经超过了ASCII码。
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/152949.html