fp32的整数表征
introduction 前几天遇到个问题,用fp32来模拟int整数的时候溢出,直观来向fp32的整数范围不是很大吗指数位最大有127位,怎么会发生溢出呢?实际上fp32的帧数表征在大于INT24之后分辨率并不是1,也就是说无法连续的表示整数,这个模拟会是有损的 analysis fp32 IEEE754表示法 $$ \begin{align} float_number = 1.m \times 2^{E} \end{align} $$ 这里m是23位 E是7位二进制加上一个偏置,实际范围是-128,127 实际上exponent部分是指数表示的,$2^n$ 和$2^{n+1}$ 之间相差很大 这里分辨率其实是mantassia小数位决定的 如果你想表示int24 那么其实就是$1.00000 \times 2^24$ 如果想表示int24+1 应该写成$(1+2^{-24}) \tims 2^24$ 这里因为小数位的最高精度只有$2^{-23}$ 他能表示的下一个整数是$(1+2^{-23})\times int24 = int24+2$ 这个时候需要增加小数位的位数来提升整数表示的精度(分辨率) 更为一般性的推导 我们想知道 在往上的整数间隔