补码是在反码后加1,那个1是怎么加的?
为什么反码的最后四位0111变成了1000? 这是怎么计算出来的?
-1的反码是 11111110 , -1的补码是11111111
在这个例子中,补码的最后两位数11是由反码最后两位数10+1=11的来的吗?
请详细解释,谢谢。 展开
真值 -11d = -1011b , 若字长8位,则:
[-11d]原 =10001011b , 最高位是du符号位,1表示负数,其余为数值位
[-11d]反 =11110100b , 将原码除符号位之外的各位取反得反码
[-11d]补 =11110101b ,将反码末位加1得补码
反码表示法规定:正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外。
原码10010= 反码11101 (10010,1为符号码,故为负)
(11101) 二进制= -13 十进制
补码表示法规定:正数的补码与其原码相同;负数的补码是在其反码的末位加1。
扩展资料:
假设当前时针指向8点,而准确时间是6点,调整时间可有以下两种拨法:一种是倒拨2小时,即8-2=6;另一种是顺拨10小时,8+10=12+6=6,即8-2=8+10=8+12-2(mod 12).在12为模的系统里,加10和减2效果是一样的,因此凡是减2运算,都可以用加10来代替。
若用一般公式可表示为:a-b=a-b+mod=a+mod-b。对“模”而言,2和10互为补数。实际上,以12为模的系统中,11和1,8和4,9和3,7和5,6和6都有这个特性,共同的特点是两者相加等于模。
参考资料来源:百度百科-补码
就好像十进制里的 0999+1=1000 一样。
第二个问题,是的。
求某个负数的补码,方法很简单的。
八位计算机中,数值 0 的补码是:0000 0000。
将其减一,不就是-1 的补码吗? 1111 1111。
从 0 减去 8,就是-8 的补码:
0000 0000-0000 1000 = 1111 1000。
根本就不用弄“取反加一”那么麻烦。
原码反码符号位,都用不上的。
因为
模-1-a=取反
且
补数=模-a=-a
所以
补数=取反+1
你自己加一下,结果,不就是这个吗?