计算机基础知识——原码、反码、补码

(一)前言

在计算机内,定点数有3种表示法:原码、反码和补码。反码是数值存储的一种,但是由于补码更能有效表现数字在计算机中的形式,所以多数计算机一般都不采用反码表示数。
在数值数据中分为有符号数与无符号数,其中,有符号数的最高位为符号位,最高位为“0”代表正数,最高位为"1"表示负数。因此对于一个单字节的二进制数而言,有符号数所表示的数值范围为:-127 (11111111) ~ +127 (01111111) ,再规定-128为:[1000 0000];无符号数的表示范围为:0 ~ 255 [00000000 ~ 11111111]。

(二)原码、反码、补码

(1)概念

原码:最高位为符号位,0代表正数,1代表负数;有符号数除符号位外均为该数的模。
反码:正数的反码与其原码一致,而负数的反码为除符号位外全部按位取反。
补码:正数的补码与其原码一致,而负数的补码为其反码加1.

(2)示例(取单字节位)

在这里插入图片描述

(三)计算机用补码存储数据的缘由

首先,在计算机中进行加减乘除的算术运算时,计算机都是通过加法和位移运算所实现的。而若是用反码来进行存储数据的话或出现一些问题,具体可以看一下示例:
以减法为例:假设我们要计算5-5,由上述可知,在计算机中实际的操作为5 +(-5)。
当数据用反码存储时,此时5 -5 计算过程即为:00000101 + 11111010=11111111,转换为原码即为-0(10000000);此时就存在这么一个问题,即在计算机中存在+0(00000000)与-0(11111111)两种表示0的二进制数。
而用补码计算时:5-5 = 00000101 + 11111011 = 100000000,可知结果超出了8位,保留后8位,结果即为00000000。
综上的,计算机一般采用补码进行数据存储。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值