C语言基础(4)-原码,反码,补码及sizeof关键字
1. 原码
+7的原码是0000 0111
-7的原码是1000 0111
+0的原码是0000 0000
-0的原码是1000 0000
2. 反码
一个数如果值为正,那么反码和原码相同。
一个数如果为负,那么符号位为1,其他各位与原码相反
+7的反码0000 0111
-7的反码1111 1000
-0的反码1111 1111
3. 补码
原码和反码都不利于计算机的运算,如:原码表示的7和-7相加,还需要判断符号位。
正数:原码,反码补码都相同
负数:最高位为1,其余各位原码取反,最后对整个数 + 1
-7的补码:=
1000 0111(原码)
1111 1000(反码)
1111 1001(补码)
+0的补码为00000000
-0的补码也是00000000
根据负数的补码求原码:补码符号位不变,其他位求反,最后整个数 + 1,得到原码
用补码进行运算,减法可以通过加法实现 |
7-6=1 7的补码和-6的补码相加:00000111 + 11111010 = 100000001 进位舍弃后,剩下的00000001就是1的补码 |
-7+6 = -1 -7的补码和6的补码相加:11111001 + 00000110 = 11111111 11111111是-1的补码 |
4.sizeof关键字
sizeof不是函数,所以不需要包含任何头文件,计算一个数据类型的大小,单位:BYTE
其实C语言不规定具体数据类型的大小,所以数据类型实际的大小和系统是息息相关的,但是相同的系统下,同数据类型大小一定是一样的。
size_t类型在32位操作系统下是unsigned int,就是一个无符号的整数。当我们写程序要处理一个不可能出现负值的时候,一般用无符号数,这样可以增大数的表达最大值。
如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮,您的“推荐”将是我最大的写作动力!欢迎各位转载,但是未经作者本人同意,转载文章之后必须在文章页面明显位置给出作者和原文连接,否则保留追究法律责任的权利。
分类:
C语言基础知识
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库