考虑一个32位浮点数(IEEE 754),尾数为0-22(23位),指数为23-30(8位),符号为31(1位)
我想找出可存储的最小正数
我被告知答案是1.18 * 10 -38 ,大约2 -126
我的分析如下
如果我们将所有零都放在尾数中并将所有零都放在指数中,那么十进制等值将是1.0 x 2 -128 = 2.93 x 10 -39
我哪里错了?
感谢
。
答案 0 :(得分:2)
如果你把所有的都放在指数中,如果尾数是非零,那么你将获得NaN
,如果尾数是0 Wikipedia IEEE 754。当指数二进制等于0时,您的最小值也在Denormal numbers空间内。
答案 1 :(得分:0)
虽然8位指数意味着-127到+128但是两种情况保留用于特殊值(参见here),所以最负的指数是-126。
顺便说一句,在Two's Complement
系统中以8位存储-128是不可能的,IEEE 754
系统是#include <vector>
#include <boost/range/algorithm.hpp>
#include <boost/sort/spreadsort/integer_sort.hpp> // I WANT USE THIS
#include "myLib.hpp"
using namespace std;
int main(void)
{
vector <unsigned> v(20);
for (unsigned i = 0; i < v.size(); i++)
v[i] = rand() % 1000;
imprime(v); // THIS PRINTS THE VECTOR
boost::sort(v); // THIS SORT THE VECTOR
imprime(v);
integer_sort(v.begin(), v.end()); // THIS DOES'T WORK
return 0;
}
指数中使用的基本系统。