5
我一直不理解……
收起
2018-07-17 16:03:32 11433 0
举报
5 条回答
写回答
取消 提交回答
是10-1=1
打错了吧。
2019-07-17 22:58:14 举报
计算机中采用二进制进行计数,二进制数的计算均要考虑是多少位的二进制数的运算。平时数学里面用1-2=-1,在计算机中如何进行呢。
假设采用8位二进制数表示则1(D)= 0000 0001(B)2(D)= 0000 0010(B) 0000 0001- 0000 0010 1111 1111 这是不是不对呢。我们来看看-1的8位二进制补码是什么。负数的补码的运算规则,是该负数的绝对值的原码,对于-1它的绝对值为1,其原码为0 000 0001,其中最高位0表示正号,后面7位表示数值,对该原码求其反码为1 111 1110,然后在反码基础上加上1,则得到 1 111 1111 这和上面的减法运算得到的结果一致。实际上0-1=1 其实也就是大概这个意思。我觉得你对于0-1=1这个问题的理解有点偏差,其实这只是告诉你二进制在进行减法的一个规则,为什么结果为1,其实是减数向高位借了位的原因,而不要把它看成是一个数学上的理论概念,这是一个运算规则而已,有点和原来小时候我们记的乘法口诀差不多的个概念。
2019-07-17 22:58:14 举报
0-1=1,实际上就是借位,变成了10-1=1
2019-07-17 22:58:14 举报
0-1=1,实际上就是借位,变成了10-1=1
-------------------------
0+1=1
1+1=10
10-1=1
2019-07-17 22:58:14 举报
举个例子吧,假设寄存器是32位的,现在的CPU有64位的,但32位的操作系统,执行时是用32的寄存器,寄存器向下兼容。
假设0和1分别在A、B寄存器中,执行结果放在C寄存器中。
A:0 0000000000000000000000000000000
B:1 0000000000000000000000000000001
你执行A-B,实际是对A取补码,B取补码,两个相加放在C中,C是补码,你通过计算可以得到它的原码。
A的补码是0 0000000000000000000000000000000
B的补码是1 1111111111111111111111111111111
A补码加B补码放在C中,C即为1 1111111111111111111111111111111
而C的原码我们知道C的补码-1 结果取反即为原码,
所以C的原码为1 0000000000000000000000000000001
即结果为-1.
注意:最左边标识符号位,0为正,1为负。从左到右表示从高位到低位。
你可以注意最右边的位,你发现可以和你说的那样,A最右边是0,B最右边是1,而在结果C中的最右边是1,可能刚好和你说的现象相符吧,但是从单个位上看。
0-1的结果肯定是-1的,如果你的寄存器只有1位,那结果溢出,这时就是1.
2019-07-17 22:58:14 举报
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载
相关知识
二进制中1+1=1对吗?
进制转换:二进制、八进制、十六进制、十进制之间的转换
方法重写或者方法覆盖
计算机组成原理慕课网三四章测试题
二进制数(10110011111)2=( )16
老年犬需要补充什么 喂养上注意适当做减法
NOIP初赛知识
试题 基础练习 十六进制转八进制
(234)D转换成二进制数、十六进制数是多少?即(234)D=( )B=( )H
python决策树及规则解析(真实案例完整流程)
网址: 二进制减法0 https://m.mcbbbk.com/newsview798576.html
上一篇: 宠物全知道下载安装 |
下一篇: 在python语言中用=判断两个 |