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,就是一个无符号的整数。当我们写程序要处理一个不可能出现负值的时候,一般用无符号数,这样可以增大数的表达最大值。



如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮,您的“推荐”将是我最大的写作动力!欢迎各位转载,但是未经作者本人同意,转载文章之后必须在文章页面明显位置给出作者和原文连接,否则保留追究法律责任的权利。
posted @   夜行过客  阅读(586)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
点击右上角即可分享
微信分享提示