先前有一篇文章是讨论int的表示范围的,其中提到了补码的表示,并提及深入讨论这个问题需要复习《计算机原理》这门课程。
昨天在学习Java入门基础时,看到教程中关于在Java中浮点表示的正无穷、负无穷、最大正值以及最小负值的表示范围这一内容时,不由自主的想起了在C++中这些数据范围的表示,于是就不得不复习了一下计算机原理课程中的相关数据表示的内容。现将复习的零散知识点记录如下:
1.补码:
正数对应的补码不变;
负数对应的被码为转化为二进制后的各位取反再加1;
2.移码:
与补码的规则仅在符号位不同,即将原数转换成补码后,再将补码的符号位取反;
记住:补码正数的最高位为1,负数的最高位为0;
3.IEEE754表示:
单精度:符号位为最高位,占1位;
指数为从次高位开始的8位;采用移码表示
尾数为从低位开始的23位; 需规格化;
其中对于8位指数位而言,其表示最大值(用移码表示): (11111111)2 = (+127)10;
?最小值(用移码表示):(01111110)2 = (-126)10;
(之所以最小值不为0111111,是因为若为0111111,则表示的原值就是1000000,这样就溢出了)
?最小值(用移码表示):(00000000)2 = (-127)10;
;
阅读(4796) | 评论(0) | 转发(0) |