注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

饥民2011

一直在搬砖

 
 
 

日志

 
 
 
 

int 类型的取值范围  

2013-03-27 01:08:26|  分类: c/c++ |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
        大伙都知道int类型的 取值范围是 -2147483648 到 2147483647
        那为什么不是                              -2147483647 到 2147483648 呢?

       
       
        因为int类型占4个byte, 就是32个bit 了,  而32个二进制位中最高位的那个一位是表示正负的。
        所以只有31 个位来表示int 类型本身的大小了。

        从      0000000 00000000 00000000 00000000 到 1111111 11111111 11111111 11111111

       其中后面31个1 就是 2147483647  啊(2^31 - 1)
       所以不算上最高位的符号位的话,  31位 共可以表示 2147483647 个 非负整数, 其中包括2147483646 个正数 和 1个0

      而加上符号位后,可以表示负数了, 加上符号1后,2147483647   31位也可以公可以表示 2147483647 个 非正整数啊,
      从10000000 00000000 00000000 00000000 到 11111111 11111111 11111111 11111111
  
      问题来了 非正整数那个符号位是1  非负正数那个符号位是0

     10000000 00000000 00000000 00000000 和 00000000 00000000 00000000 00000000
     
     ??

     实际上负数在内存里是用二进制补码表示的(反码+1)

     所以规定 00000000 00000000 00000000 00000000 是0
     而 1开头的 2147483647 全部是负数
     而 10000000 00000000 00000000 00000000 就用来表示最小的负数 -2147483648

     所以符号位0开头的int类型整数  能表示
2147483646 个整数 和0
     而符号位为1开头的int类型整数 能表示 2147483647 个负数

范围就是 -2147483648 到 2147483647  。。。
  评论这张
 
阅读(987)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018