C语言进阶笔记之补码
前言
在计算机中,数据被储存在内存当中,而数据被储存的方式就是变为补码,方便在有符号数据计算的时候计算。
一、原码
原码(true form)是一种计算机中对数字的二进制定点表示方法。原码表示法在数值前面增加了一位符号位(即最高位为符号位):正数该位为0,负数该位为1,其余位表示数值的大小。例如2原码表示为0000 0010,-2原码表示为1000 0010。
我们使用原码的优点是它能够直观的表达数据,但它的缺陷是不能够直接进行运算,需要把数值和符号分开后才能计算,这样计算起来会很麻烦。
二、反码
反码也是一种定点表示方法,它大多用在系统环境设置中。
在求反码时,正数的反码是它本身,负数的反码就是在原码的基础上每位取反,符号位不变。
三、补码
在计算机中,数据的存储大多都是以补码形式进行存储的,利于有符号数据的运算。
补码的规则和反码相似,正数的补码是它本身,负数的补码就是在原码的基础上每位取反,符号位不变,最后再加一。根据原码规则,我们能够知道一个有符号的八位二进制数的取值范围是-128~127。0000 0000既不是正数也不是负数,在一个字节的数据中1000 0000 是最小的数,所以我们认为它是-128,它的反码是1111 1111,补码是1000 0000,溢出一位。
补码的存在就是为了有符号运算产生的,在硬件电路中加法器的运算过程我会在有空的时候更新。
总结
数据的形式大抵就是这些,如有错误或欠缺,欢迎评论指出。