数据类型取值范围计算

本文详细解析了char、signedchar及unsignedchar等数据类型的取值范围计算原理,通过二进制转换为十进制的方法,清晰展示了不同数据类型所能表示数值的范围。

之前一直不清楚数据类型的取值范围是怎么计算的,现在弄懂了,记录一下。

char型示例

signed char类型取值范围计算1

假设一个字符型变量占用一个字节,也就是8个二进制位(bit),由于是signed,所以最高为可以为1(负数)或0(正数)。

  • 当最高位为1时,能表示的范围是【1000 0000】-【1111 1111】。然后按照二进制转十进制的规则计算,二进制“1000 0000”将8bit全部取反,变成“0111 1111”,再加上1变成“1000 0000”,此时按照无符号数来计算,其十进制为128,加上负号变为-128。“1111 1111”根据相同规则转换为十进制数-1。其取值范围为【-128,-1】。
  • 当最高位为0时,能表示的范围是【0000 0000】-【0111 1111】。二进制“0000 0000”的十进制为0,“0111 1111”的十进制为“\(2^{6}\)+\(2^{5}\)+\(2^{4}\)+\(2^{3}\)+\(2^{2}\)+\(2^{1}\)+\(2^{0}\) = 127,因此符号位为0时,其取值范围为【0,127】。

结合两种情况,整个signed char类型的取值范围为【-128,127】。

unsigned char类型取值范围计算

unsigned是无符号的,所以它能表示的范围是【0000 0000】-【1111 1111】,将范围转化为十进制数为【0,255】。

其他类型

其他类型以此类推。

Reference



  1. https://zhuanlan.zhihu.com/p/25755257

转载于:https://www.cnblogs.com/huerxiong/p/10488501.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值