今天鞋百科给各位分享12的补码怎么算的知识,其中也会对用八位二进制补码怎么计算12+9???怎么表示?(8位二进制补码计算11-3)进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在我们开始吧!
用八位二进制补码怎么计算12+9???怎么表示?
你的理解不正确,你的这两个数异号,运算结果永远不会溢出,按照你的5位运算后,第六位的进位实际上没有运算结果的意义,纯粹是补码运算带来的,因此就丢掉了,结果是01010,正好是+10的补码
根据补码运算规则,只有无符号数的相加运算的最高位有进位才表示溢出
还有一种溢出的情况就是同号相加符号改变:
两个正数相加的结果是负数:01011+ 01100 = 10111,用10进制表示就是11+ 12 = -9
或者两个负数相加成为正数:10101 + 11001 = 1 01110,用10进制表示就是-11 + (-7) = 14
具体结果为什么如此,请从补码的定义考虑
顺便说一句,其实无论多少位的补码运算都是如此
用二进制补码运算计算-16-14
-16的补码为 1111 0000
-14的补码为 1111 0010
两者相加:
1111 0000
1111 0010+
---------------
1110 0010 (注:超出8位的舍弃)----此即-30的补码
二进制补码怎么算?
一分钟了解计算机与二进制
分别写出十进制数64和-10的原码反码和补码并求出它们的和
+64 原码=反码=补码=0100 0000。
-10 原码=1000 1010;
-10 反码=1111 0101;
-10 补码=1111 0110。
以补码相加,得:0011 0110,这是+54 的补码。
十进制的-20补码为多少
十进制-20的补码是11101100。
计算机里原码是用最高位表示数字的正负,1为负数,0为正数。最高位为1的负整数原码求补码,将其原码除符号位外的所有位取反(0变1,1变0,符号位为1不变)后加1,最后加上符号位。
即十进制-20的原码为10010100,除符号位外的所有位为0010100,取反为1101011,再加1就等于1101100,带上符号位最终为11101100。
扩展资料:
在计算机系统中,数值一律用补码来表示和存储。原因在于,使用补码,可以将符号位和数值域统一处理;同时,加法和减法也可以统一处理。可以将减法运算转化为补码的加法运算来实现,克服了原码加减法运算繁杂的弊端,可有效简化运算器的设计。
同一个数字在不同的补码表示形式中是不同的。比如-15的补码,在8位二进制中是11110001,然而在16位二进制补码表示中,就是1111111111110001。
补码的计算问题
你确实错了:
-60=11000100
53=00110101
11000100+00110101=11111001
正数的补码 与原码相同。
负数的补码 符号位为1,其余位为该数绝对值的原码按位取反;然后整个数加1。
所以:-60的 最高位 为1,其余七位 为60的源码0111100取反后1000011加1为1000100 总起来就是11000100
其结果11111001,其中最高位为1,说明为负数,
其余七位1111001减1为1111000,然后取反为0000111,转换为十进制为7
总起来就是-7
最高位只是一个符号位,1就是负数,0就是正数,参与计算,但是不参与取值
关于补码问题 还有考虑宽度,例如 是按照字节来计算就是8个位,c语言中的char类型就是这种,最大取值为127到-128 ,
如果是 无符号类型,unsigned char ,那么最高位 不在代表符号,而参与取值 即0到255,没有负数。
当然c语言中的int 是32位的,原理同上。
你只所以错了,是因为混淆了 反码
例如
原码:
7的原码是0 0000111
-7的原码是1 0000111
可见原码无法进行加法计算
反码:
正数:正数的反码与原码相同。
负数:负数的反码,符号位为“1”,数值部分按位取反。
+7= 0 0000111
-7= 1 1111000
补码:
正数:正数的补码和原码相同。
负数:负数的补码则是符号位为“1”,数值部分按位取反后再在末位(最低位)加1。也就是“反码+1”。
+7= 0 0000111
-7= 1 1111001
a. 采用补码后,可以方便地将减法运算转化成加法运算,运算过程得到简化。正数的补码即是它所表示的数的真值,而负数的补码的数值部份却不是它所表示的数的真值。采用补码进行运算,所得结果仍为补码。