posts - 71,  comments - 39,  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 阅读(1111) 评论(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  回复  更多评论
  


标题  
姓名  
主页
验证码 *
内容(提交失败后,可以通过“恢复上次提交”恢复刚刚提交的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
[使用Ctrl+Enter键可以直接提交]
.NET频道  博客园社区  闪存
网站导航:



<2009年7月>
2829301234
567891011
12131415161718
19202122232425
2627282930311
2345678

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

常用链接

留言簿(3)

随笔分类(70)

随笔档案(71)

相册

charles推荐访问

搜索

  •  

积分与排名

  • 积分 - 22180
  • 排名 - 155

最新评论

  • 1. re: 数单词数
  • 规范化;门口麻烦机;那么孔方兄那么妈妈法;酿母菌法那么;风格那么明年;愤怒麻烦那么愤怒愤怒留念多孔蕈乐观好看的里边赶快巴拿马城,新年巴拿马国际法,不
  • --申诉台
  • 2. re: 数单词数
  • 感到发现看来自动化大会单行本打开怎么赶快电子管矛盾感动不动门口‘大批看病黄道婆民主
  • --申诉台
  • 3. re: 移除字符
  • 评论内容较长,点击标题查看
  • --D_BOY
  • 4. re: 很土
  • 呵呵,慢慢来就好嘛
  • --flamingo
  • 5. re: 毕业啦
  • 评论内容较长,点击标题查看
  • --moonlight

阅读排行榜

评论排行榜