二进制中0-1为什么=1? 希望大家能详细回答.
4个回答
展开全部
举个例子吧,假设寄存器是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.
假设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.
展开全部
二进制中0-1并不等于1,而是等于-1.
但是对于单个数位而言,如果考虑到从高位借位,说0-1等于1实际上是指二进制的10-1=1,用十进制表示就是2-1=1.
这就像十进制运算,例如 10-1, 在计算个位数的时候 0-1 结果是9
但是对于单个数位而言,如果考虑到从高位借位,说0-1等于1实际上是指二进制的10-1=1,用十进制表示就是2-1=1.
这就像十进制运算,例如 10-1, 在计算个位数的时候 0-1 结果是9
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这不是二进制的事! 这只是计算机闹得怪!
按照二进制的运算规则,这式子的结果,应当是-1。
但是在计算机中,做这个运算时,结果就是 1。
----------------------
因为,在计算机中相减,如果不够减,是可以从左边借位的。
即使,0 的左边,什么也没有,它也可以借!
那么,借一当二,那么,0-1 的差,必然就是 1 了。
呵呵,这结果,千万别让你的小学老师看到啊!
----------------------
0-1,在这里,被减数,仅仅写了一个 0。
而在计算机中,计算机的字长是多少,就有多少个 0。
在八位机中,这就是八个零:0000 0000。
那么,0-1,显然不够减,那就逐位的向左边借、借、借 ...
最终的八位结果,就是:1111 1111。
-1,在计算机中的补码,就是这么算出来的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
0-1=1;因为这是不考虑借位的减法。如果考虑借位 。它前面一位照样变了
就像不考虑进位1+1=0;
至于你说原因 。 别人问你10进制的1+1=2为什么。详细点回答 你怎么回答你想过吗。 这是数学书上说的公理 。
就像不考虑进位1+1=0;
至于你说原因 。 别人问你10进制的1+1=2为什么。详细点回答 你怎么回答你想过吗。 这是数学书上说的公理 。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询