首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >整数补码加减法运算法则是什么_补码加减法中

整数补码加减法运算法则是什么_补码加减法中

作者头像
全栈程序员站长
发布2022-11-09 09:28:33
发布2022-11-09 09:28:33
2.1K0
举报

大家好,又见面了,我是你们的朋友全栈君。

整数的补码计算

正数的补码计算:与原码相同 负数的补码计算: ①先求出负数的原码,如-4的原码为1000 0100 ②通过原码求出反码,负数的反码就是:除符号位以外,其他位全部取反,如-4的反码为1111 1011 ③负数的补码等于负数的反码末位+1,如-4的补码为1111 1100 特例:约定-128的补码为1000 0000

注:若已知补码 求原码:正数也是它本身,负数的求法同上,即对补码除符号位外取反,末位加1,就得到原码

整数补码加减运算

加法

[A+B]补 = [A]补 + [B]补

减法

[A-B]补 = [A]补 + [-B]补

注:[-B]补的求法是:[B]补 连同符号位在内,每位取反,末位加1

举例

(1) 已知A=4,B=-5,求A+B,A-B:

  • 4的补码:[A]补 = 0000 0100;
  • -5的原码:[B]原 = 1000 0101,-5的反码:[B]反 = 1111 1010,-5的补码: [B]补 = 1111 1011;
  • 已知-5的补码是1111 1011,连同符号位在内每位取反得到0000 0100,末位加1得到[-B]补 = 0000 0101;
  • A+B:[A+B]补 = [A]补 + [B]补 = 0000 0100 + 1111 1011 = 1111 1111,但1111 1111是补码形式,要得到原码,首先除符号位外取反得到1000 0000,末位加1得到1000 0001,对应的值为-1
  • A-B:[A-B]补 = [A]补 + [-B]补 = 0000 0100 + 0000 0101 = 0000 1001,可见是正数,补码即原码,对应的值为9

(2)已知A=-128, B=-127, C=127, 求B-A, C-A, C-B

  • -128的补码:[A]补 = 1000 0000,-127的补码: [B]补 = 1000 0001,127的补码:[C]补 = 0111 1111
  • -[A]补:[A]补 1000 0000 -> 全部取反 0111 1111 ->末位加一 1000 0000
  • -[B]补:[B]补 1000 0001 -> 全部取反 0111 1110 ->末位加一 0111 1111
  • B-A:[B-A]补 = [B]补 + [-A]补 = 1000 0001 + 1000 0000 = 0000 0001,可见是正数,对应的值为1
  • C-A:[C-A]补 = [C]补 + [-A]补 = 0111 1111 + 1000 0000 = 1111 1111,可见是负数,需要转换位对应的原码再求值,转为原码是1000 0001,对应的值为-1
  • C-B: [C-B]补 = [C]补 + [-B]补 = 0111 1111 + 0111 1111 = 1111 1110,可见是负数,需要转为对应原码再求值,转为原码是10000010,对应的值为-2

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/190626.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年9月22日 ,如有侵权请联系 cloudcommunity@tencent.com 删除
目录
  • 整数的补码计算
  • 整数补码加减运算
    • 加法
    • 减法
  • 举例
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档