正数、负数求原码、反码、补码

二进制,有符号数,首位为1的是负数,首位为0的是正数。(规定)
无符号数没有正负之分,所以也没有首位的限制。(规定)
以下示例皆以八位二进制表示)

无符号数

无符号数的原码、反码、补码都一样,皆为该数的二进制表示法

原码 反码 补码

定义

无符号数的原码为该数的二进制表示法
无符号数的反码与原码一样
无符号数的补码与原码一样

举例

1(无符号数)==>0000 0001(原码)==>0000 0001(反码)==>0000 0001(补码)

正数

正数的原码、反码、补码都一样,皆为该数的二进制表示法(同无符号数差不多)

原码 反码 补码

定义

正数的原码为该数的二进制表示法。
正数的反码与原码一样。
正数的补码与原码一样

举例

1==>0000 0001(原码)==>0000 0001(反码)==>0000 0001(补码)
首位为0的表示正数,所以原码、反码和补码的首位都是0

负数

原码

定义

负数的原码为该数对应的无符号数的二进制,将首位置1。

举例

-1==>1(无符号数)==>0000 0001(无符号数的二进制)==>1000 0001(原码,首位置1)。
(负数的首位为1)

反码

定义

负数的反码为该数原码的符号位不变,其它位取反。

举例

-1==>1000 0001(原码)==>1111 1110(反码,符号为不变,其它位取反)。
(负数的首位为1)

补码

定义

1、负数的补码为该数对应的无符号数的二进制取反加一。
2、负数补码(首位为1)减一,取反表示的是这个数的无符号数的二进制。

举例
1

-128==>128(无符号数)==>1000 0000(-128的无符号数的二进制)==>0111 1111(取反)==>1000 0000(补码,加一)(负数的首位为1)
-1==>1(无符号数)==>0000 0001(-1对应无符号数的二进制)==>1111 1110(取反)==>1111 1111(补码,加1)(负数的首位为1)

2

1000 0000(补码) ==> 0111 1111(减一) ==> 1000 000(取反,无符号数128)==> -128(负数)(负数的首位为1)
1111 1111(补码) ==> 1111 1110(减一) ==> 0000 0001(取反,无符号数1) ==> -1(负数)(负数的首位为1)

后记

计算机皆使用补码。用补码计算,符号位也可以参与运算。若以原码计算,符号位参与运算数据会出错,所以还需要标识符号位,会造成电路设计复杂,故抛弃。若以反码计算,会存在+0与-0的问题,而0在人们的常识中是不存在正负之分的,所以也抛弃。
补码取反加一为该数的相反数(补码) eg: 1 ==> 0000 0001(补码)==>1111 1110(取反) ==>1111 1111(加1) ==> -1
因为二进制有位数限制,所以表示的数大小也有限制,8位表示的无符号数返回为0(0000 0000(补码))~256(1111 1111(补码)),有符号数为-128(1000 0000(补码))~127(0111 1111(补码))

  • 21
    点赞
  • 61
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值