char 与 unsigned char

unsigned char j=130;
printf("uchar j=%d\n",j);  //j=130

unsigned char转换为int时考虑全部8位


unsigned char m=130;
printf("uchar m=%d\n",(char)m);  //m=-126
unsigned char转换为了char,最高位为符号位

(130[原]=1000 0010,130[补]=1111 1110)


char k=130;
printf("char k=%d\n",k);  //k=-126
同上一条


char i=-7;
printf("char i=%u\n",(char)i);  //i=4294967289=2^32-1-6
printf("char i=%u\n",(unsigned char)i);  //i=249=2^8-1-6
负数值的char 赋给无符号整数,高位会填充全1;

先转换为unsigned char, 则自身的8位即为无符号数,再赋给无符号整数,则高位填充0

(-7[原]=1000 0111,-7[补]=1111 1001)


unsigned char n=-7;
printf("uchar n=%u\n",n);  //i=249

同上一条


小结:其实char与unsigned char中存储的二进制是相同的,只是作为char时最高位代表了符号







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值