两分钟看懂原码、反码和补码

本文介绍了计算机中正数和负数的原码、反码和补码表示方式,特别是负数的转换规则。强调了在内存中实际存储的是补码,因为补码允许加法和减法操作统一处理,避免了使用原码可能出现的错误。文章通过实例展示了数值在内存中的存储形式,并提到了大端和小端存储模式。
摘要由CSDN通过智能技术生成

在介绍原码、反码和补码的概念之前,有没有想过数据在内存中是如何存放的呢?

是不是定义一个a变量,赋个20给它,它在内存中就存了个20呢?

我们不妨用VS2019的调试窗口来看一下,下面的代码存放的地址。

int main()
{
   
	int a = 20;
	int b = -10;

	return 0;
}

查看a的地址存放的数值,是一个十六进制数:14 00 00 00,看到这里我非常惊讶我不是赋值20吗?为什么是这么个东西。
在这里插入图片描述
再查看a的地址存放的数值,也是一个十六进制数:f6 ff ff ff
在这里插入图片描述
到底是怎么存的?使20存成14 00 00 00,-10存成f6 ff ff ff呢?

原码、反码和补码

计算机中的有符号数有三种表示方法,即原码、反码和补码。有符号数分为正数和负数。

三种表示方法均有符号位数值位两部分,第一位是符号位,都是用0表示“正”,用1表示“负”,而数值位三种表示方法各不相同。

注:无符号数也有原码、反码和补码。只不过无符号数的原码、反码和补码是相同的。

正数的原码、反码和补码

有符号正数的原码、反码和补码三者相同。
10 原 码 = 10 反 码 = 1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值