有符号char 和无符号char和大小端

无符号位的char简易计算方法分享


```c
#include<stdio.h>
int main()
{
	unsigned char a = 200;
	unsigned char b = 100;
	unsigned char c = 0;
	c = a + b;
	printf("%d %d\n", a + b, c);

	return 0;
}

这里无符号位的char的取值范围是 0——255, 放在c里面要溢出就是300-255=44;
为什么这样溢出呢, 有符号位的char 占8个比特位的空间 当 1111 1111再加1的时候就会变成 1 0000 0000
但只能存放8个比特位啊,那个1(权重是2的9次方的1)就溢出了`。上面也是相同的道理
直接输出a+b ,这个没有放在任何类型的变量里面,值是什么就是什么

在这里插入图片描述

大小端的讲解

概念:
一个数据存放在内存中是以补码的形式
小端:数据的低字节序存放在低地址,高字节序存放在高地址
大端:数据的低字节序存放在高地址,高字节序存放在低地址
补充说明一点:指针一定是指向低地址一端的。向后访问的时候取决于指针的类型
在这里插入图片描述
![在这里插入图片描述](https://img-blog.csdnimg.cn/d0db2a724e0c41b4aaf288ffc4c3bf34.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5oiR6L275P5reh5YaZ5ZOI,size_20,color_FFFFFF,t_70,g_se,x_16
在这里插入图片描述

简易计算理解有符号位的char

首先范围是 –128到127,如果把128赋值给一个char类型的变量如: char a=128;实际上存贮在a上溢出了,a的值为**–128**
要是 char b=–129 那么b的实际值为127
那我想说什么呢? char的取值一定是在负128到127循环的。按我上面举的例子,可以避免很复杂的整型提升然后截断的计算。

``在这里插入图片描述
这题的思路是上面呢? 我们知道strlen遇到 '\0’停止,而‘\0’的ASCLL码值是0;
实际上char和有符号的char本质上也是整型。因为字符存贮形式的是ASCLL码值。
所以很题目很简单了,当给数组a赋值完后,我们只需要知道0在哪就行了
从-1,-2…到-128…再到127,126…1….0;
一共是255.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

通过全部用例

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值