你的点赞评论就是对博主最大的鼓励
当然喜欢的小伙伴可以:点赞+关注+评论+收藏(一键四连)哦~
🍊自我介绍
Hello,大家好,我是小珑也要变强(也是小珑),我是易编程·终身成长社群一名“创始团队·嘉宾” ,现在我来为大家介绍一下有关嵌入式方面的内容。在进入介绍之前,可能有一些小伙伴不了解易编程·终身成长社群;想要进一步了解社群的小伙伴可以点击下方链接自行跳转至关于社群的介绍:
易编程·终身成长社群介绍 :
https://blog.csdn.net/weixin_74300052?spm=1011.2266.3001.5343
🍊数据的类型分类
🍊数据类型细分
🍊有符号型和无符号型
我们上述,所介绍的数据类型,全部都可以分为两种,分别用两个关键字对应。
signed | unsigned | |
---|---|---|
含义 | 有符号数据 【正数,0,负数】 | 无符号数据 【正数,0】 |
常用写法 | signed int | Unsigned int |
特点 | 可省略 | 不可省略 |
示例:
signed char a; //char a;
unsinged char b;
signed int c; //int c;
unsinged int d;
🍊数据的存储(以八字节为例)
char ,有符号类型,占1bytes。 可以表示负数,0,正数。范围[-128-127] -128 ~ -1,0~127
unsigned char ,无符号类型,占1bytes。可以表示0,正数。范围[0~255]
1bytes = 8bit
===>0000 0000 //0
===>1111 1111 //255
· 超出范围数据的计算方法
a. 数据范围
char [-128~127] 正数,0,负数
unsigned char 【0~255】 正数,负数
b. 设计规则
无符号类型的数原码,反码,补码是它本身.[正数和0]
有符号类型的数的最高位表示符号位,0表示为正数,1表示为负数
负数的反码=符号位不变,其他位按位取反
负数的补码= 反码+1
c.计算方法
先计算整数的补码(=右边的数)
把补码赋值给变量,然后观察变量的数据类型,
若是为unsinged char类型,一定为正数或0,原,反,补一样.%d输出的原码就是补码,直接转换为元素输出即可。
若是为char类型,观察变量内存存储数据的最高位,1 表示为负数,%d输出需要转换为原码输出。
示例用法
①
#include <stdio.h>
int main()
{
char a = 200;
printf("a = %d\n",a);
return 0;
}
/*
计算方法:(最高位代表正负)
200 = 128 + 64 + 8 ===> 1100 1000 原码
200的补码 ===> 1100 1000 复制给了变量a
那么a在内存中补码为:1100 1000,而a为char类型,最高位表示符号位,为1,说明负数
取反:1011 0111
+1:1011 1000===>-(0011 1000)===>-56
*/
②
#include <stdio.h>
int main()
{
unsigned char b = 280;
printf("b = %d\n",b);
return 0
}
/*
计算方法:
280 = 256 + 16 + 8 ===>1 0001 1000 b为 unsigned char 类型占8bit
所以把低八位复制给变量b
所以b 在内存中的补码: 0001 1000 ,b为unsigned char类型,一定为0,或者正数
原码: 0001 1000 ===> 16 + 8 =24
大家对这小节内容有什么疑问可以在评论区评论,博主和广大网友看到后会第一时间回复的