当前位置:网站首页>【数据存储】signed,unsigned到底怎么区分?如何计算?
【数据存储】signed,unsigned到底怎么区分?如何计算?
2022-08-09 22:56:00 【tt142】
本文主要讲解 1.整型和5.空类型,剩下的在后续系列会尽早更新,详情见主页
目录
1.空类型 void
void FUN( void );
void* p;
共三种用法:
1.代码第一行 第一个void代表函数类型为空
即没有返回值,但是有时候我们会看到
void Fun(...)
{
...
return ;
}
此时的return作用和循环里的break十分类似,代表在那个地方停止递归,返回上一层
2.形参位置是void,对应第一个代码(void)
函数不需要参数
3.空指针
指针的类型是空
不是指所修饰的指针没有类型
而是类型可以任意,int char 都是可以的,就像一个垃圾桶,什么类型的垃圾无需分类就可以扔到void里面
2.整型
具体类型如本文开头的图片
char 也归入 是因为字符在内存中存储的都是ASCII码值,所以也算是整数
而所有的整型类型都是有具体细分的
首先我们观察到 char 和别的不一样——> char在不同的编译器可能是signed或者unsigned
VS是signed
关键问题来了 signed unsigned区别在哪
首先要知道补充知识
%d打印整型,%u打印无符号整型
unsigned原反补相同,没有符号位,32个比特位都是数值位
整型提升补位 补符号位,unsigned补0
1.*原反补的转换
图片来自作者之前的博客,感兴趣的可以进去多了解一些相关知识,加深印象,提高熟练度
计算机的CPU加法器只能运算加法,而且是对补码进行操作,减法也可以看做是加法
在各种类型的计算中,还需要2.*整形提升的知识
https://blog.csdn.net/weixin_71138261/article/details/126071887?spm=1001.2014.3001.5501
这个也是作者的博客
在的部分详细讲解过
3.*大小端字节序存储
这个是一个很重要的知识
首先要明确
一个数字 比如十进制的 123
其中1——权重——>10^2 2——>权重——>10^1 3——>权重——>10^0
很清楚观察到,1代表数据的高位,3是低位
那么对于一个数据来说,比如16进制的0x11223344,
由于大小端字节序存储,所以这个整型的四个字节空间分别是 11 22 33 44
11代表这个数据的高位
44 是 低位
现在通俗理解清楚之后来看定义
小端字节序存储:把一个数据的低位字节内容 存放到低地址处,高位字节内容存放到高地址处
大端字节序存储:把一个数据的低位字节内容 存放到高地址处,高位字节内容存放到高地址处
关于内存的存储到底是怎么回事,为什么要有大小端存储,以及大小端存储的详细内容可以关注后期作者更新的文章
准备知识到此结束
来看一个例子
int main()
{
char a=-1;
signed char b=-1;
unsigned char c=-1;
printf("a=%d,b=%d,c=%d",a,b,c);
return 0;
}
答案是多少呢
缩放严重!!!
但是没关系
重要的是下图
char 规定 01111111 + 1 = -128
强调:加法符号位要运算
学完本节内容之后,我们更要意识到 分析 的重要,不可以简单认为unsigned int a=-1就是简单去掉符号
创作不易,感谢观看
边栏推荐
猜你喜欢
【集训DAY3】挖金矿【二分答案】
上交所实时行情文件汇总
经济衰退即将来临前CIO控制成本的七种方法
MVC与MVVM模式的区别
Digital wallets, red sea ecological rapid introduction of small programs can help capture device entry wisdom
Mysql/stonedb - slow SQL - 2022-08-09 Q16 analysis
KingbaseGIS Jin Cang database using manual (6.3. Geometric object creation function)
恭喜获奖得主 | 互动有礼获赠 Navicat Premium
Golden Warehouse Database KingbaseGIS User Manual (6.4. Geometry Object Access Function)
2022-08-09 mysql/stonedb-subquery performance improvement-introduction
随机推荐
【诗歌】爱你就像爱生命
分布式数据库难题(二):数据复制
SRv6 performance measurement
【集训DAY3】阶乘【数学】
LiveData : Transformations.map和 Transformations.switchMap用法
IT传奇人物菲尔德的转型经验教训及给CIO的建议
JS基础笔记-关于对象
【C语言】指针和数组的深入理解(第四期)
生成树和交换的总结
关于服务治理
conda新建环境时报错NotWritableError: The current user does not have write permissions
【哲理】读书的意义
Qt 之 QDateEdit 和 QTimeEdit
多商户商城系统功能拆解24讲-平台端分销会员
70. 爬楼梯进阶版
深入理解多线程(第一篇)
【云原生】一文讲透Kubevela addon如何添加腾讯Crane
源码编译安装LAMP和LNMP
Gartner's global integrated system market data tracking, hyperconverged market growth rate is the first
The latest "Grain Academy Development Tutorial" in 2022: 10 - Front-end payment module