Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1027998
  • 博文数量: 288
  • 博客积分: 10306
  • 博客等级: 上将
  • 技术积分: 3182
  • 用 户 组: 普通用户
  • 注册时间: 2008-08-12 17:00
文章分类

全部博文(288)

文章存档

2011年(19)

2010年(38)

2009年(135)

2008年(96)

我的朋友

分类: C/C++

2009-08-06 11:02:36

    先前有一篇文章是讨论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;
 ;
 
   
   
阅读(4754) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~