上往建站提供服务器空间服务商,百度快照排名,网站托管,百度推广运营,致力于设计外包服务与源代码定制开发,360推广,搜狗推广,增加网站的能见度及访问量提升网络营销的效果,主营:网站公司,百度推广公司电话,官网搭建服务,网站服务企业排名,服务器空间,英文域名等业务,专业团队服务,效果好。
海安企业网站设计 - 海安高端网站定制 - 海安品牌网站搭建 - 上往建站

32 位 float 型的二进制存储 (32位浮点型数的二进制存储)
分类 编程技术

举例来说,十进制的5.0,写成二进制是101.0,相当于1.01×2^2。那么,按照上面V的格式,可以得出 s=0,M=1.01,E=2。
IEEE 754 规定,对于 32 位的浮点数,最高的 1 位是符号位 s,接着的 8 位是指数 E,剩下的 23 位为有效数字 M。

IEEE 754 对有效数字M和指数E,还有一些特别规定。
前面说过,1≤ M <2,也就是说,M 可以写成 1.xxxxxx 的形式,其中 xxxxxx 表示小数部分。IEEE754 规定,在计算机内部保存 M 时,默认这个数的第一位总是 1,因此可以被舍去,只保存后面的 xxxxxx 部分。比如保存 1.01 的时候,只保存 01,等到读取的时候,再把第一位的1加上去。这样做的目的,是节省 1 位有效数字。以32位浮点数为例,留给 M 只有 23 位,将第一位的1舍去以后,等于可以保存 24 位有效数字。
至于指数 E,情况就比较复杂。
首先,E 为一个无符号整数(unsignedint)。这意味着,如果E为8位,它的取值范围为 0~255;如果 E 为 11 位,它的取值范围为 0~2047。但是,我们知道,科学计数法中的E是可以出现负数的,所以 IEEE754 规定,E 的真实值必须再减去一个中间数,对于 8 位的 E,这个中间数是 127;对于 11 位的E,这个中间数是 1023。
比如,2^10 的 E 是 10,所以保存成 32 位浮点数时,必须保存成 10+127=137,即 10001001。
然后,指数E还可以再分成三种情况:
(1)E不全为0或不全为1。这时,浮点数就采用上面的规则表示,即指数E的计算值减去127(或1023),得到真实值,再将有效数字M前加上第一位的1。
(2)E 全为 0。这时,浮点数的指数 E 等于 1-127(或者 1-1023),有效数字 M 不再加上第一位的 1,而是还原为 0.xxxxxx 的小数。这样做是为了表示 ±0,以及接近于 0 的很小的数字。
(3)E 全为 1。这时,如果有效数字 M 全为 0,表示 ± 无穷大(正负取决于符号位 s);如果有效数字 M 不全为 0,表示这个数不是一个数(NaN)。
注意:十进制小数入内存是极有可能失精度的比如 0.3 这哥们儿本身就无法转化为有限二进制表示。
原文地址:https://www.cnblogs.com/SimpleISP/p/5280362.html
捕获组分为:
普通捕获组(Expression)
命名捕获组(?Expression)
普通捕获组
从正则表达式左侧开始,每出现一个左括号"("记做一个分组,分组编号从 1 开始。0 代表整个表达式。
对于时间字符串:2017-04-25,表达式如下
(d{4})-((d{2})-(d{2}))
有 4 个左括号,所以有 4 个分组:
编号 捕获组 匹配
0 (d{4})-((d{2})-(d{2})) 2017-04-25
1 (d{4}) 2017
2 ((d{2})-(d{2})) 04-25
3 (d{2}) 04
4 (d{2}) 25
public static final String DATE_STRING = "2017-04-25";
public static final String P_COMM = "(d{4})-((d{2})-(d{2}))";
Pattern pattern = Pattern.compile(P_COMM);
Matcher matcher = pattern.matcher(DATE_STRING);
matcher.find();//必须要有这句
System.out.printf("
matcher.group(0) value:%s", matcher.group(0));
System.out.printf("
matcher.group(1) value:%s", matcher.group(1));
System.out.printf("
matcher.group(2) value:%s", matcher.group(2));
System.out.printf("
matcher.group(3) value:%s", matcher.group(3));
System.out.printf("
matcher.group(4) value:%s", matcher.group(4));
命名捕获组
每个以左括号开始的捕获组,都紧跟着 ?,而后才是正则表达式。
对于时间字符串:2017-04-25,表达式如下:
(?<year>d{4})-(?<md>(?<month>d{2})-(?<date>d{2}))
有 4 个命名的捕获组,分别是:
编号 名称 捕获组 匹配
0 0 (?d{4})-(?(?d{2})-(?d{2})) 2017-04-25
1 year (?d{4})- 2017
2 md (?(?d{2})-(?d{2})) 04-25
3 month (?d{2}) 04
4 date (?d{2}) 25
命名的捕获组同样也可以使用编号获取相应值。
public static final String P_NAMED = "(?<year>d{4})-(?<md>(?<month>d{2})-(?<date>d{2}))";
public static final String DATE_STRING = "2017-04-25";
Pattern pattern = Pattern.compile(P_NAMED);
Matcher matcher = pattern.matcher(DATE_STRING);
matcher.find();
System.out.printf("
===========使用名称获取=============");
海安企业网站设计 - 海安高端网站定制 - 海安品牌网站搭建 - 上往建站
上往建站提供搭建网站,域名注册,官网备案服务,网店详情页设计,企业网店,专业网络店铺管理运营全托管公司咨询电话,服务器空间,微信公众号托管,网页美工排版,致力于域名申请,竞价托管,软文推广,全网营销,提供标准级专业技术保障,了却后顾之忧,主营:虚拟主机,网站推广,百度竞价托管,网站建设,上网建站推广服务,网络公司有哪些等业务,专业团队服务,效果好。
服务热线:400-111-6878 手机微信同号:18118153152(各城市商务人员可上门服务)