10 c语言中整型int,long,long long范围及原码补码表示

 以2字节为例来说:

对于无符号的数值(原码及补码都一样),最小值是0,最大值是1111  1111  1111  1111=216-1=65535,共216个编码。

对于有符号的来说较为复杂:

1)原码表示

最大值:0111  1111  1111  1111=215-1=32767

最小值:1111  1111  1111  1111=-215-1=-32767

正0和负0:0000000000000000=1000000000000000=0

因为有两个0的存在,所以共有216个编码。

但是计算机采用二进制补码存储数据。

1)补码表示

最大值:0111  1111  1111  1111=215-1=32767

负数需要把除符号位以后的部分取反加一,即-32767的补码为1000  0000  0000  0001

正0:0000  0000  0000  0000,负0:经过非符号位取反1111  1111  1111  1111)加1后,同样变成了0000  0000  0000  0000,也就是说正0和负0在补码系统中编码是一样的。因为16位二进制数可以表示216个编码,所以补码需要比原码多一个数编码出来,这个数为-32768,编码为1000000000000000。所以补码系统中,范围是-3276832767

整型范围:

unsigned int   0~2^32-1=0~4294967295

int     -2^31~2^31-1=-2147483648~2147483647 

unsigned long      0~2^32-1=0~4294967295

long      -2^31~2^31-1=-2147483648~2147483647 

unsigned long long     0~2^64-1=0~1844674407370955161

long long      -2^63~2^63-1=-9223372036854775808~9223372036854775807

unsigned  __int64     0~2^64-1=0~1844674407370955161

__int64       -2^63~2^63-1=-9223372036854775808~9223372036854775807



  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值