分享本文,希望能起到抛砖引玉的作用,加深朋友对位运算以及计算机底层的认识。
有如下十进制的加法运算:13 + 9 = 22
我们像这样来拆分这个运算过程:不考虑进位,分别对各位数进行相加,结果为sum:个位数3加上9为2;十位数1加上0为1;最终结果为12;
只考虑进位,结果为carry:3 + 9 有进位,进位的值为10;
如果步骤2所得进位结果carry不为0,对步骤1所得sum,步骤2所得carry重复步骤1、 2、3;如果carry为0则结束,最终结果为步骤1所得sum:这里即是对sum = 12 和carry = 10重复以上三个步骤,(a) 不考虑进位,分别对各位数进行相加:sum = 22; (b) 只考虑进位: 上一步没有进位,所以carry = 0;(c) 步骤2carry = 0,结束,结果为sum = 22。
把上面的运算过程放在二进制中试试。
13和9的二进制分别为:0000 11010000 1001
①不考虑进位,分别对各位数进行相加得到sum:0000 0100
②当考虑进位,有两处进位,第0位和第3位,只考虑进位的结