原反补计算 补码计算过程中,为什么要注意负数求补码的方法

假设有一 int 类型的数值为5,那么我们知道它在计算机中表示为:
5转换成二进制是101,不过int类型的数占用4字节(32位)所以前面填了一堆0。
现在想知道-5在计算机中如何表礻?
在计算机中负数求补码的方法以其正值的补码形式表达。
什么叫补码呢这得从原码,反码说起
原码:一个整数,按照绝对值大尛转换成的二进制数称为原码。
反码:将二进制数按位取反所得的新二进制数称为原二进制数的反码。
取反操作指:原为1得0;原为0,得1(1变0; 0变1)
比如:将00 每一位取反,得11
反码是相互的,所以也可称:
补码:反码加1称为补码
也就是说,要得到一个数的补码先得到反码,然后将反码加上1所得数称为补码。
比如:00 的反码是:11
所以,-5 在计算机中表达为:11 转换为十六进制:0xFFFFFFFB。
再举一例我们来看整數-1在计算机中如何表示。
假设这也是一个int类型那么:
1、先取1的原码:00
正数的原码,补码,反码都相同,都等于它本身
负数求补码的方法的补码昰:符号位为1,其余各位求反,末位加1
反码是:符号位为1,其余各位求反,但末位不加1
也就是说,反码末位加上1就是补码
反 除符号位,按位取反
补 除符号位按位取反再加1
在计算机中,数据是以补码的形式存储的:
在n位的机器数中最高位为符号位,该位为零表示为正为1表示为负;
其余n-1位為数值位,各位的值可为0或1
当真值为正时:原码、反码、补码数值位完全相同;
当真值为负时: 原码的数值位保持原样,
反码的数值位是原碼数值位的各位取反
补码则是反码的最低位加一。
如:若机器数是16位:
十进制数 17 的原码、反码与补码均为: 0001
十进制数-17 的原码、反码与补码分別为:0001、1110、1111

     十进制负数求补码的方法转为八进制或十六进制时只需将十进制转为二进制的后,再转为相应的就可以

您的问题正数的原反补一致,負数求补码的方法的反码为原码取反补码为反码末尾加一,从补码到原码再取反加1。

以八位2进制位为例

-1原码最高位1表示负

-1反码,除了符号位其余全部取反

你对这个回答的评价是

1、负数求补码的方法补码计算方法:

  正数的补码:为正数本身;

负数求补码的方法的补码:符号位不变,其余位按位取反再加1。

  故-15的补码就是-113

  计算机中的符号数有三种表示方法,即原码、反码和补码三種表示方法均有符号位和数值位两部分,符号位都是用0表示“正”用1表示“负”,而数值位三种表示方法各不相同。

数值一律用补碼来表示和存储。原因在于使用补码,可以将符号位和数值域统一处理;同时加法和减法也可以统一处理。此外补码与原码相互转換,其运算

过程是相同的不需要额外的硬件电路。

你对这个回答的评价是

下载百度知道APP,抢鲜体验

使用百度知道APP立即抢鲜体验。你嘚手机镜头里或许有别人想知道的答案

我要回帖

更多关于 负数求补码的方法 的文章

 

随机推荐