這幾天疫情在家看網課,學校的補碼視頻講的太枯燥了。上B站結果就缺這一節😥。。。這就很悲傷呀。
對於補碼反碼和定點減法弄不明白的同學可以看看這篇:不列公式說定點運算,以及為什么需要反碼補碼https://www.cnblogs.com/AD-milk/p/12737812.html
補碼乘法說來也簡單,和原碼差不多,符號位也要參與運算。
首先來看例子
設[X]補=X0.X1X2X3...Xn[Y]補=Y0.Y1Y2Y3...Yn
則有:[X∗Y]補=[X]補∗(0.Y1Y2Y3...Yn)−Y0∗[X]補
展開合並后有:[X∗Y]補=[X]補∗∑(Yn+1−Yn)2-n
看黃色部分,也就是說我們到底是加上X補還是減又或者是0,就看倒數第二位的值於倒數第一位的差值。
也就是說:
在遵循原碼乘法的規則上,對部分積的加減做處理
1.Yn=Yn+1 ,那么部分積加上零(0*[X]補當然是零啦),再右移一位
2.Yn <Yn+1(01) ,部分積加上[x]補,再右移一位
3.Yn >Yn+1(10) ,部分積加上[-x]補,再右移一位
這下諸位應該看懂了吧,怎么加,就是一直用倒數第二位減去倒數第一位的差值再去乘以X的補就OK了。