Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >补码的加减法运算_简述补码减法运算的规则

补码的加减法运算_简述补码减法运算的规则

作者头像
全栈程序员站长
发布于 2022-10-05 01:20:48
发布于 2022-10-05 01:20:48
6.6K03
代码可运行
举报
运行总次数:3
代码可运行

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

补码的加减法运算

本文内容参考自王达老师的《深入理解计算机网络》一书<中国水利水电出版社>

一、补码加法:

1、补码的加法运算 两个机器数相加的补码可以先通过分别对两个机器数求补码,然后再相加得到,在采用补码形式表示时,进行加法运算可以把符号位和数值位一起进行运算(若符号位有进位,导致了益出,则直接舍弃),结果为两数之和的补码形式。 示例1:求两个十进制数的和 35+18。 首先,规定字长是8位,也就是只能用8位二进制表示。 35的原码:00100011。 18的原码:00010010。 因为35和18都是正数,所以补码和原码完全一致。 35的补码:00100011。 18的补码:00010010。 因为补码是可以连同符号位一起运算,所以运算法则等同于无符号二进制运算:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 00100011---35二进制表示
 00010010---18二进制表示
 00110101-----转换成10进制是53。结果正确!

示例2:求两个十进制数的和 35+(-18)。 同示例1一样,只能用8位表示。 35的原码:00100011。 -18的原码:10010010。 因为35是正数,补码与原码完全一致,但是-18是负数,补码需要转换。 35的补码:00100011。 -18的补码:由原码除符号位外取反,再在最低位+1,得到结果是11101110。这时都是补码,运算规则等同于无符号二进制加法。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
   00100011
   11101110
  100010001---因为前面规定了字长是8位,这里出现了9位,
  所以最高位舍弃,舍弃后,结果为00010001转换成十进制是:17。结果正确!(超出字长部分直接舍弃)
二、补码减法:
  • 1、补码的减法运算 减法实际上就是加一个负数。运算法则和加法实际上是一致的!

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年9月13日 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
补码到底是个什么东西
先引入一个前提,在计算机中数字是以二进制进行存储的,也就是我们看到的2,在计算机中存储的是10。我们进行的加法运算 2+1=3 在计算机中是这样的(这里先假设计算机存储的是4位二进制数字) 0010+0001=0011
烟草的香味
2019/11/10
7090
【软考学习2】数据表示——原码 反码 补码 移码
原码 反码 补码 移码都是计算机中表示数据的方式,各有所长,对于我们来说,都需要加以学习。
Designer 小郑
2023/08/01
5760
【软考学习2】数据表示——原码 反码 补码 移码
一个案例搞懂原码、反码、补码,不懂得请看过来
根据冯~诺依曼提出的经典计算机体系结构框架。一台计算机由运算器,控制器,存储器,输入和输出设备组成。其中运算器,只有加法运算器,没有减法运算器(据说一开始是有的,后来由于减法器硬件开销太大,被废了 )
用户7656790
2020/08/13
1.1K0
一个案例搞懂原码、反码、补码,不懂得请看过来
微处理器原理之数值转换练习与解答
1、一个四位二进制补码的表示范围是( B ) A、0~15 B、-8~7 C、-7~7 D、-7~8 过程:二进制补码取值范围为
timerring
2022/07/20
1.6K0
微处理器原理之数值转换练习与解答
Python 笔记:二进制的补码
计算机只能识别0和1,使用的是二进制,而在日常生活中人们使用的是十进制,”正如亚里士多德早就指出的那样,今天十进制的广泛采用,只不过是我们绝大多数人生来具有10个手指头这个解剖学事实的结果。尽管在历史上手指计数(5,10进制)的实践要比二或三进制计数出现的晚。”.为了能方便的与二进制转换,就使用了十六进制(2 4)和八进制1.数值有正负之分,计算机就用一个数的最高位存放符号(0为正,1为负).这就是机器数的原码了。
用户8442333
2021/05/17
1.3K0
带你快速了解原码、反码、补码,搞定进制转换
很多的小伙伴在学习计算机相关课程的时候,经常会听到原码、反码、补码等词语,但是很少有人能够理解它们具体是干嘛的。但是随着编程的深入,我们知道在计算机中只能存储0和1的二进制码,所有数据类型最后都会转为二进制码再存储到内存中。所以理解这些知识能够帮助你理解数值在内存当中的存储方式。
学长冷月
2020/08/01
1.3K0
深度理解 原码, 反码, 补码
本篇文章讲解了计算机的原码, 反码和补码. 并且进行了深入探求了为何要使用反码和补码, 以及更进一步的论证了为何可以用反码, 补码的加法计算原码的减法. 论证部分如有不对的地方请各位牛人帮忙指正! 希望本文对大家学习计算机基础有所帮助! 一. 机器数和真值 在学习原码, 反码和补码之前, 需要先了解机器数和真值的概念. 1、机器数 一个数在计算机中的二进制表示形式,  叫做这个数的机器数。机器数是带符号的,在计算机用一个数的最高位存放符号, 正数为0, 负数为1. 比如,十进制中的数 +3 ,计算机字长为8
互联网金融打杂
2018/04/03
1.1K0
深度理解 原码, 反码, 补码
世界上有10种人,一种是懂二进制的人,一种是不懂二进制的人。
看到这个问题,我想到了之前的一个场景是要获取近30天的日期列表,我的思路是通过System.currentTimeMillis()获取当前时间戳,然后依次减去对应的毫秒数(24 * 60 * 60 * 1000),后来发现问题:30 * 24 * 60 * 60 * 1000因为超过了int的上限值而变为了一个负数。于是我回复他:
敲得码黛
2021/02/22
1.4K0
世界上有10种人,一种是懂二进制的人,一种是不懂二进制的人。
Java中,为什么byte类型的取值范围为-128~127?
在学习Java基础语法的时候,初学者的我们可能都会有这么一个疑问为什么byte类型的取值范围为什么是[-128,127]而不是[-127,127]。01111111表示最大的数值:127,因为第一位是符号位,所以11111111应该是最小的数值:-127,不是这样才对?
全栈程序员站长
2022/07/02
1.6K0
Java中,为什么byte类型的取值范围为-128~127?
计算机程序的思维逻辑 (4) - 整数的二进制表示与位运算
上节我们提到正整数相乘的结果居然出现了负数,要理解这个行为,我们需要看下整数在计算机内部的二进制表示。 十进制 要理解整数的二进制,我们先来看下熟悉的十进制。十进制是如此的熟悉,我们可能已忽略了它的含义。比如123,我们不假思索就知道它的值是多少。 但其实123表示的1*(10^2) + 2*(10^1) + 3*(10^0),(10^2表示10的二次方),它表示的是各个位置数字含义之和,每个位置的数字含义与位置有关,从右向左,第一位乘以10的0次方,即1,第二位乘以10的1次方,即10,第三位乘以10的2
swiftma
2018/01/31
1.1K0
补码运算加减乘除原理是什么_计算机组成原理补码乘法运算
大家好,又见面了,我是你们的朋友全栈君。 首先我们来看为什么要使用补码运算法: 因为人脑可以知道第一位是符号位, 在计算的时候我们会根据符号位, 选择对真值区域的加减. (真值的概念在本文最开头). 但是对于计算机, 加减乘数已经是最基础的运算, 要设计的尽量简单. 计算机辨别”符号位”显然会让计算机的基础电路设计变得十分复杂! 于是人们想出了将符号位也参与运算的方法. 我们知道, 根据运算法则减去一个正数等于加上一个负数, 即: 1-1 = 1 + (-1) = 0 , 所以机器可以只有加法而没有减法, 这样计算机运算的设计就更简单了. 于是人们开始探索 将符号位参与运算, 并且只保留加法的方法. 首先来看原码: 计算十进制的表达式: 1-1=0
全栈程序员站长
2022/11/04
5490
位运算-补码那些事
原码:计算机中对数字的二进制定点表示方法,这种表示方法在数字前面加上一个符号位,“1”代表这个数是负数,“0”代表这个数是正数,除符号位之外,其余位表示该数字的值。(注意:如果明确定义为无符号整数,那么将不存在符号位,本文主要讲述的是有符号整数的情况)
玛卡bug卡
2022/09/21
9990
位运算-补码那些事
定点数的加减法
数值运算的核心是指加、减、乘、除四则算术。由于计算机中的数有定点和浮点两种表示形式,因此相应有定点数的运算和浮点数的运算。本文将介绍计算机中定点数的加减法运算过程。
恋喵大鲤鱼
2018/08/03
1.5K0
定点数的加减法
原码、反码、补码详解
一个数在计算机中的二进制表示形式,叫做这个数的机器数。机器数是带符号的,在计算机用一个数的最高位存放符号,正数为 0,负数为 1。
马修
2021/01/21
1K0
《Java从入门到失业》第三章:基础语法及基本程序结构(3.7):运算符(基本算数运算符、原码、反码、补码)
      数学运算是计算机的基本用途之一,Java提供了非常丰富的运算符来支持。我们根据运算的特点和性质,把运算符划分为几组:基本算数运算符、自增自减运算符、关系运算符、位运算符、逻辑运算符、赋值运算符、其他运算符。下面分别介绍。
用户7801119
2020/09/27
5950
一文读懂原码、反码与补码
二进制和十进制一样,也是一种进位计数制,但是它的基数是 2。二进制表达式中 0 和 1 的位置不同,它所代表的数值也不同。例如,二进制数 0000 1010 表示十进制数 10。一个二进制数具有两个基本特点:两个不同的数字符号,即 0 和 1,逢二进一。
阿宝哥
2020/01/14
2.8K0
一文读懂原码、反码与补码
原码、反码、补码的正(nao)确(can)打开方式
IT可乐
2018/01/04
1.2K0
原码、反码、补码的正(nao)确(can)打开方式
计算机负数补码_负数用补码表示如何理解
在计算机系统中,数值一律用补码来表示(存储)。 主要原因:使用补码,可以将符号位和其它位统一处理;同时,减法也可按加法来处理。另外,两个用补 码表示的数相加时,如果最高位(符号位)有进位,则进位被舍弃。 2、补码与原码的转换过程几乎是相同的。 数值的补码表示也分两种情况: (1)正数的补码:与原码相同。 例如,+9的补码是00001001。 (2)负数的补码:符号位为1,其余位为该数绝对值的原码按位取反;然后整个数加1。 例如,-7的补码:因为是负数,则符号位为“1”,整个为10000111;其余7位为-7的绝对值+7的原码 0000111按位取反为1111000;再加1,所以-7的补码是11111001。 已知一个数的补码,求原码的操作分两种情况: (1)如果补码的符号位为“0”,表示是一个正数,所以补码就是该数的原码。 (2)如果补码的符号位为“1”,表示是一个负数,求原码的操作可以是:符号位为1,其余各位取 反,然后再整个数加1。 例如,已知一个补码为11111001,则原码是10000111(-7):因为符号位为“1”,表示是一个负 数,所以该位不变,仍为“1”;其余7位1111001取反后为0000110;再加1,所以是10000111。 在“闲扯原码、反码、补码”文件中,没有提到一个很重要的概念“模”。我在这里稍微介绍一下“模” 的概念: “模”是指一个计量系统的计数范围。如时钟等。计算机也可以看成一个计量机器,它也有一个计量范 围,即都存在一个“模”。例如: 时钟的计量范围是0~11,模=12。 表示n位的计算机计量范围是0~2(n)-1,模=2(n)。【注:n表示指数】 “模”实质上是计量器产生“溢出”的量,它的值在计量器上表示不出来,计量器上只能表示出模的 余数。任何有模的计量器,均可化减法为加法运算。 例如: 假设当前时针指向10点,而准确时间是6点,调整时间可有以下两种拨法: 一种是倒拨4小时,即:10-4=6 另一种是顺拨8小时:10+8=12+6=6 在以12模的系统中,加8和减4效果是一样的,因此凡是减4运算,都可以用加8来代替。 对“模”而言,8和4互为补数。实际上以12模的系统中,11和1,10和2,9和3,7和5,6和6都有这个特 性。共同的特点是两者相加等于模。 对于计算机,其概念和方法完全一样。n位计算机,设n=8, 所能表示的最大数是11111111,若再 加1称为100000000(9位),但因只有8位,最高位1自然丢失。又回了00000000,所以8位二进制系统的 模为2(8)。 在这样的系统中减法问题也可以化成加法问题,只需把减数用相应的补数表示就可以 了。把补数用到计算机对数的处理上,就是补码。
全栈程序员站长
2022/11/15
2.8K0
定点数的表示方法
计算机中数值的表示有两种形式,一是定点数(Fixed-point Number),二是浮点数(Floating-point Number)。
恋喵大鲤鱼
2018/08/06
2.8K0
定点数的表示方法
原码,反码,补码的深入理解与原理答案_原码反码补码例题详解
本文从原码讲起。通过简述原码,反码和补码存在的作用,加深对补码的认识。力争让你对补码的概念不再局限于:负数的补码等于反码加一。
全栈程序员站长
2022/09/29
8000
原码,反码,补码的深入理解与原理答案_原码反码补码例题详解
推荐阅读
相关推荐
补码到底是个什么东西
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验