发表于: 2017-12-09 23:18:36
0 661
今天完成的事情:继续昨天的一些内容 昨天没研究完的 在这里补齐
首先是正则表达式 昨天编辑完 没有保存上
还是从头说起 元字符 注意不同的文档对它的说明是有歧义的
/b 代表着单词的开头或结尾,也就是单词的分界处。虽然通常英文的单词是由空格,标点符号或者换行来分隔的,
但是\b并不匹配这些单词分隔字符中的任何一个,它只匹配一个位置。
\b匹配这样的位置:它的前一个字符和后一个字符不全是(一个是,一个不是或不存在)\w
这里简单的只看 元字符的几种常用 一般有 位置 数量 字符三种类型
. 匹配除换行符以外的任意字符 \w 匹配字母或数字或下划线或汉字
\s 匹配任意的空白符 \d 匹配数字
\b 匹配单词的开始或结束 ^ 匹配字符串的开始 $ 匹配字符串的结束
而那些匹配数量的一般又称为 限定符
* 重复零次或更多次 + 重复一次或更多次 ? 重复零次或一次
{n} 重复n次 {n,} 重复n次或更多次 {n,m} 重复n到m次
而匹配这些元字符本身需要转义 /
然后我们看一下() 以及[]
[]一般代表集合 这里额外提一下 | 分支条件
而()小括号来指定子表达式(也叫做分组),然后你就可以指定这个子表达式的重复次数了,你也可以对子表达式进行其它一些操作
然后看一下反义
\W 匹配任意不是字母,数字,下划线,汉字的字符 \S 匹配任意不是空白符的字符
\D 匹配任意非数字的字符 \B 匹配不是单词开头或结束的位置
[^x] 匹配除了x以外的任意字符 [^aeiou] 匹配除了aeiou这几个字母以外的任意字符
明天计划的事情:终于有域名了 弄一下服务器 能够展示出来页面
遇到的问题:理论知识太多了 给我看不完的感觉
收获:详细看了一下 浮点类型
首先 第一个知识点 10进制转化2进制
正整数 除二取余 倒序排列 其他位补零 负整数 想转化成 正整数 然后取反加一
而小数比较特别 小数部分要乘二取正 取到小数部分为0或者位数到了
这里举两个例子 0.25 乘2为0.5 取整为0 0.5 乘2为1 取整为1 小数部分为零 结束 所以是0.01
0.23 这个会发现一直小数部分不为0 就取到能保存多少位
好了 现在来看 float 和double 是一样的 在内存里的是什么样子
实数在内存中以规范化的浮点数存放,包括数符、阶码、尾数。数的精度取决于尾数的尾数。
比如32位机上float型为23位(因为规范化数的数码最高位恒为1,不必存储,实际精度为24位,下面会有详解),double型为52位。
单精度float型存储在内存中的大小为4个字节,即32位。
xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx
浮点表示法类似于科学计数法,任一数均可通过改变指数部分,使小数点位置发生移动,如23.45可以写成:2.345*10^1
浮点表示的一般形式为:R=M*2^e (R:Real M:Mantissa尾数 e:exponent阶码)
把上面float的二进制可分成三部分:
x xxxxxxxx xxxxxxxxxxxxxxxxxxxxxxx
数符(1b) 阶码(8b) 尾数(23b)
double型的浮点数分别是:数符(1b)、阶码(8b)、尾数(52b)
数符sign:real的正负号 "+":0 "-":1
阶码e:这里二进制其实是移码E(0~255)的表示,e=E-127(double型中e=E-1023) e为正值说明这个浮点数向左移动了e位,e为负值说明这个浮点数向右移动了e位。127=2^7-1 1023=2^10-1
尾数M:有效数字位,这里是有效数字位的部分二进制码,
例1:
float型浮点数125.5转化成32位二进制浮点数
125.5的二进制码为1111101.1,写成二进制的科学计数为:1.111101*2^6(因为科学计数法“整数”部分大于1,在二进制中,“整数”部分只能恒为1)即向左移6位,则e=6,则E=e+127=133,而E的二进制码为10000101,而1.111101把“整数”部分去除1之后为111101,之后补0,共23b,形成了尾码。
所以125.5的32位二进制浮点数为
0 10000101 11110100000000000000000
例2:
float型浮点数0.5转化成32位二进制浮点数
0.5的二进制码为0.1,写成二进制的科学计数为:1.0*2^(-1)即向右移1位,则e=-1,则E=e+127=126,而E的二进制码为01111110,而1.0把“整数”部分去除1之后为0,之后补0,形成了阶码。
所以0.5的32位二进制浮点数为
0 01111110 00000000000000000000000
例3:
32位二进制浮点数为0 10000010 00010000000000000000000转化成十进制数浮点数
题中已给我们分了三部分,数符部分、阶码部分、尾数部分。
数符部分为0,则代表此数为整数;阶码部分为10000010,则E=130,则e=E-127=3,则说明其向左移了3位,0001加上“整数”部分的1之后,为1.0001。则原二进制数为1000.1=十进制8.5,或R=1.0001*2^3=8.5
然后这里又涉及到 正码 补码 反码 太混乱了 没搞懂
评论