posts - 71,  comments - 41,  trackbacks - 0
通常我们会使用CRT提供给我们的一个头文件<limits.h>中预定义宏INT_MAX, INT_MIN, UINT_MAX来定义int的最大最小值
下边给出由计算得出这些值的方法,其他数据类型同理
unsigned  int  GetUnsignedIntMax()
{
    
return   ~ 0
;
}


signed 
int  GetSignedIntMax()
{
    
return  (static_cast < unsigned  int > ( ~ 0 ))  >>   1
;
}


signed 
int  GetSignedIntMin()
{
    signed 
int  i  =   - 1
;
    
if  (i  &   1
)
        
return   - ( (static_cast < unsigned  int > ( ~ 0 ))  >>   1  )  -   1
;
    
else

        
return   - ( (static_cast < unsigned  int > ( ~ 0 ))  >>   1  );
}
稍微解释一下,前两个没有什么好说的,最后一个要考虑是two complement还是one complement
如果是前者,有这样一个计算公式,~X + 1= -X,即一个数取反加一表示这个数所对应的负数
posted on 2006-12-01 15:55 Charles 阅读(2116) 评论(5)  编辑 收藏 引用 所属分类: 面试小算法

FeedBack:
# re: 计算Int最大最小值
2006-12-04 09:24 | 史传红
很好。  回复  更多评论
  
# re: 计算Int最大最小值
2006-12-13 10:15 | brent
不错.  回复  更多评论
  
# re: 计算Int最大最小值
2006-12-25 11:56 | 沐枫
为啥用函数呢...
const int INT_MAX = ~0;
这样不挺好的。  回复  更多评论
  
# re: 计算Int最大最小值
2006-12-25 12:20 | Charles
面试题而已,无他  回复  更多评论
  
# re: 计算Int最大最小值
2008-04-14 18:40 | 网友
2147483647  回复  更多评论
  

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理


<2006年12月>
262728293012
3456789
10111213141516
17181920212223
24252627282930
31123456

决定开始写工作日记,记录一下自己的轨迹...

常用链接

留言簿(4)

随笔分类(70)

随笔档案(71)

charles推荐访问

搜索

  •  

积分与排名

  • 积分 - 49663
  • 排名 - 452

最新评论

阅读排行榜

评论排行榜