首页 / 资讯中心 / 文章详情

编程基础学习

编程基础学习 ★ FEATURED ARTICLE
数制转换二进制和十进制互相转换原码反码补码逻辑符号编码IEEE754浮点数IEEE754是计算机表示浮点数的标准核心思想是想把一个数拆出符号位、指数位、尾数位三部分存储。最常用的是32位单精度(float)和64位双精度(double)。单精度(32位)1符号位8位指数23位尾数指数偏移量为127.双精度(64位)1符号位11位指数52位尾数指数偏移量为1023.举例说明以单精度浮点数表示176.0625为例转换为二进制10110000.0001规格化1.01100000001×2^7符号位0正数指数编码7 127 134 → 二进制10000110尾数(隐藏前导1后)01100000001000000000000最终存储为0 10000110 01100000001000000000000大致理解阶码指数表示数的大小全是1接近最大全是0接近最小尾数表示具体的值关键规则规约数(Normalized)尾数前隐藏一个默认的1.实际公式为(-1)^S × 1.M × 2^(E-偏移量)。例二进制1.0101只存小数点后面0101开头的1不占用存储空间节省一位。非规约数(Subnormal)指数位全0且尾数非0时用于表示接近0的极小数值此时尾数前不再隐藏1.计算公式位(-1)^S × 0.M × 2^(1-偏移量)。特殊值指数全0、尾数全0 → ±0指数全1、尾数全0→±∞指数全1、尾数非0→NaN(非数值).有效数字不是小数点后的位数是全部有效数字。float23位尾数换算十进制大约6~7位有效数字double52位尾数大约15-16位有效数字。数值变大之后float尾部小数丢失精度。注意指数全0和全1都有特殊含义不能当作普通指数使用实际可用的指数范围单精度位-126到127双精度位-1022到1023.有效位数二进制每增加1bit能区分2倍大小十进制每增加1位能区分10倍大小。log102 ≈ 0.3010含义1个二进制bit≈0.301位十进制有效数字。float24bit × 0.301 ≈ 7.2位double53bit × 0.301 ≈ 16位。阶码偏移(移码)IEEE-754的阶码不直接存真实指数要加上一个偏移量。float(32位)偏移量 127double(64位)偏移量 1023特殊规则阶码两种边界情况阶码全部比特为1尾数全0无穷大(inf)尾数非0非数字(NaN无效计算结果比如0除以0)阶码全部比特为0代表非规格化数用来表示接近0的极小数字此时不再隐藏开头的1.正常使用的普通浮点数阶码既不全0也不全1.
阅读完成 · 觉得有帮助?
咨询建站