浅谈C/C++整数类型取值范围

数据类型占用空间取值范围
short2字节-2^15 ~ 2^15-1
int 4字节-2^31 ~ 2^31-1
unsigned int4字节0 ~ 2^32-1
long4字节(32位系统),8字节(64位系统)-2^31 ~ 2^31-1
long long8字节-2^63 ~ 2^63-1
  • 数据是以补码的形式存储在计算机中的
  •  补码中存在符号位(最高位)与数据为(其余各位),
  • 符号位中: 0代表正,1代表负
  • 正数的原码、反码、补码都相同
  • 负数的反码:原码符号位不变,其余各位取反
  • 负数的补码:反码+1

例如正数:11

原码:00001011
反码:00001011
补码:00001011

例如负数:-11

原码:10001011
反码:11110100
补码:11110101
  • 对运算规则有了了解之后可能会疑惑:1字节的取值范围不应该是: -2^7-1  ~  2^7-1
  • 但实际上是:-2^7  ~  2^7-1
  • 原因是:大于等于0范围:0~127 原码表示为0000 0000 ~ 0111 1111
  • 负数范围:-128 ~ -1 原码表示为 1000 0000 ~ 1000 0001
  • 最终结论是,-2^7使用1000 0000表示,也可以理解为使用“负0”表示最小值
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值