char类型的大小范围

char类型在C语言中占1个字节,包含8个二进制位。对于有符号char,首位是符号位,范围是-128到127,其中10000000表示-128。无符号char的范围则是0到255。可以通过补码理解这个数值圆逻辑,+1即可从127过渡到-128。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

要知道char类型的大小范围,首先要知道char类型占1个字节,而1个字节等于8个bit位,每一个bit位是一位二进制数,所以char类型有8个二进制位,那么就有2的8次方256种可能。
我们先讨论(signed) char(有符号)首位是符号位,所以char类型最大是01111111,即127。
所以在0~127属于char类型的范围
但是我们发现了一个奇怪的组合10000000,“-0”,但它真的是-0吗?不是的,它是-128
//-128的二进制表示
//原码:         10000000 00000000 00000000 10000000
//取反加一得补码:11111111 11111111 11111111 11111110
//截断后得:     11111110
//"-0"的二进制
//原码:        10000000
//补码:       111111110
//截断后得:     11111110
因为整数在机器中是以补码的形式存储,可知“-0”和“-128”在char中存储是一样的。所以10000000其实就是-128
总之char类型的范围是-128~127

这里提一个小技巧,01111111是127,在它的基础上+1就是-128,+2就是-127,所以可以把char类型的取值看做一个圆,只要一直+1就能遍历的一个圆。

无符号unsigned char 因为最高位不是符号位,和其他位的意义一样,所以最大是2的8次方-1也就是255,范围是0~255
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值