二进制加减运算进阶(原码/反码/补码/-1-1=(-1)+(-1)=-2)

计算机中数据以二进制方式0或1进行存储,计算时也采用二进制进行,二进制计算过程中涉及到以下概念
原码:数据对应的二进制表示,首位代表符号位0-正数,1-负数;
反码:正数的反码等于其原码;负数的反码是在其原码的基础上,符号位不变,其他位取反;
补码:由于直接采用反码计算,符号位也会参与计算,导致最终结果不准确,所以引进了补码.正数的补码等于其反码同样等于其原码;负数的补码等于其反码+1.所以,在根据补码推算原码时,需要逆向计算,先补码末位-1,再取反.
举例:-1-1=(-1)+(-1)=-2
(1)-1的原码,首位是1表示负数,其他位和其对应正数相同,即:1000 0001;
(2)-1的反码,等于其原码取反,因为是负数,所以其首位符号位不变,其他位取反,即:1111 1110;
(3)-1的补码,等于其反码末位加1,即:1111 1111.
(4)则

(-1)+(-1)= 1111 1111(补码)
                        1111 1111(补码)
                        -------------
                        1111 1110(补码结果)

(5)此时得到还只是补码结果,需再把补码结果逆向计算,先转成反码再转成原码,即补码结果末位减1再取反:

			1111 1110(补码结果)
   -                1(末位减1<因末位为0,减1时需向左借1位,借位后末位变成2(二进制逢二进一),末位2-1=1,被借位减1变成0>)
			--------------------------
		    1111 1101(补码结果对应的反码)
		    1000 0010(对补码结果对应的反码取反(一样的原则,取反时首位符号位不变),得到原码,即计算结果,转换成10进制,即-2)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章