主题:问大家一个关于浮点数表示范围的问题,回复就给30分!
不知道大家有没有看过清华大学出版的一本叫《C++语言程序设计》的书,作者是郑莉和董渊。
我之所以把问题放在这是因为这本书本书中第一章讲的关于浮点数方面的内容属于计算机组成里面的东西。
好了,闲话少扯,进入问题:这本书第16页讲到:
浮点数的表示范围,由阶码位数和尾数位数决定。若阶码用r位整数(补码)表示,尾数用n位定点小数(原码)表示,则浮点数的表示范围是:
-[1-2^(-n)]*2^{[2^(r-1)]-1}-1 至 [1-2^(-n)]*2^{[2^(r-1)]-1}
我不明白为什么最小值是-[1-2^(-n)]*2^{[2^(r-1)]-1}-1而不是-[1-2^(-n)]*2^{[2^(r-1)]-1},为什么要减个1呢?想了好久都没想明白是什么道理,希望知道的同志能给出个令人满意的说法,谢谢了。
我之所以把问题放在这是因为这本书本书中第一章讲的关于浮点数方面的内容属于计算机组成里面的东西。
好了,闲话少扯,进入问题:这本书第16页讲到:
浮点数的表示范围,由阶码位数和尾数位数决定。若阶码用r位整数(补码)表示,尾数用n位定点小数(原码)表示,则浮点数的表示范围是:
-[1-2^(-n)]*2^{[2^(r-1)]-1}-1 至 [1-2^(-n)]*2^{[2^(r-1)]-1}
我不明白为什么最小值是-[1-2^(-n)]*2^{[2^(r-1)]-1}-1而不是-[1-2^(-n)]*2^{[2^(r-1)]-1},为什么要减个1呢?想了好久都没想明白是什么道理,希望知道的同志能给出个令人满意的说法,谢谢了。