C语言复习之补码

本文介绍了计算机中数据存储的三种方式:原码、反码和补码。原码直观表示正负数,但运算不便;反码用于某些系统设置,正数不变,负数除符号位外取反;补码是计算机存储有符号数据的主要方式,正数不变,负数取反加一,便于硬件直接计算。补码解决了运算中的溢出问题,简化了硬件设计。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

C语言进阶笔记之补码



前言

在计算机中,数据被储存在内存当中,而数据被储存的方式就是变为补码,方便在有符号数据计算的时候计算。


一、原码

原码(true form)是一种计算机中对数字的二进制定点表示方法。原码表示法在数值前面增加了一位符号位(即最高位为符号位):正数该位为0,负数该位为1,其余位表示数值的大小。例如2原码表示为0000 0010,-2原码表示为1000 0010。
我们使用原码的优点是它能够直观的表达数据,但它的缺陷是不能够直接进行运算,需要把数值和符号分开后才能计算,这样计算起来会很麻烦。

二、反码

反码也是一种定点表示方法,它大多用在系统环境设置中。
在求反码时,正数的反码是它本身,负数的反码就是在原码的基础上每位取反,符号位不变。

三、补码

在计算机中,数据的存储大多都是以补码形式进行存储的,利于有符号数据的运算。
补码的规则和反码相似,正数的补码是它本身,负数的补码就是在原码的基础上每位取反,符号位不变,最后再加一。根据原码规则,我们能够知道一个有符号的八位二进制数的取值范围是-128~127。0000 0000既不是正数也不是负数,在一个字节的数据中1000 0000 是最小的数,所以我们认为它是-128,它的反码是1111 1111,补码是1000 0000,溢出一位。
补码的存在就是为了有符号运算产生的,在硬件电路中加法器的运算过程我会在有空的时候更新。

总结

数据的形式大抵就是这些,如有错误或欠缺,欢迎评论指出。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值