定点数的加减乘除

定点数的加减其实可以归为一类。

定点加减

定点加减运算主要用到补码运算。

加法表达式为[X+Y]补=[X]补+[Y]补;就是说X+Y补码的结果为X的补码加上Y的补码,即结果为补码。

减法表达式为[x-y]补=[X]补+[-Y]补;就是说X-Y的补码结果就是用加法表示的,是用X的补码和-Y的补码相加得到的。[-Y]补等于[Y]补各位取反,包括符号位,然后加1就得到了。

溢出

溢出就是给定一个固定的容器,容器里盛装的液体溢出来了,我就不多解释了。计算机中的溢出就是给了你一个固定的位数去盛放位数,某个数在这个容器里装不下了就是溢出。定点数的加减运算就会出现这种情况。

那么如何判断加减溢出,粗糙的方法是正正相加为负溢出,负负相加为正溢出,正-负为负溢出,负-正为正溢出。

高端操作判断溢出有个名字:变形补码法,其实特别简单,既可以看出溢出,也可以看出溢出的方向,是向正数方向溢出了还是负数方向溢出了,一目了然。

就是符号位用双符号位表示就可以啦,就这么简单。符号位为00、11为正负数,若出现01、10则溢出了。01为上溢,10为下溢了。

定点数的乘法运算

主要有原码一位乘、补码一位乘。

原码一位乘

符号位不参加运算,数值位均以绝对值出现,X*Y中X为被乘数,采用双符号位,Y为乘数,采用单符号位。部分积初始化为0。然后接下来的操作就是for循环了。

for(y的最低位;该位没有超出y最高位;y的下一位)

{ 若y该位为1,部分积+X的绝对值,生成的新的部分积右移一位;

若y该位为0,部分积+0,生成的新的部分积右移一位;

}

结果表示:X符与Y符的异或产生的符号作为结果的符号。


原码一位乘例子

补码一位乘

符号位参与运算。

X*Y中,被乘数采用双符号位,乘数采用单符号位,乘数的最低位后添加上一个附加位,附加位值为0,仍然存在部分积。

for(y的最右边两位(初始的话为附加位与原来的最低位);y的两位不是小数点左右两边的数;y向左挪动两位)

若y的两位为00或11,则部分积+0,新的部分积右移两位;

若y的两位为01,则部分积+[X]补,新的部分积右移两位;

若y的两位为10,则部分积+[-X]补,新的部分积右移两位;

}


补码一位乘例子

其实到这了现在,应该会发现原码一位乘与补码一位乘很相似,部分积都是要移动n次(即X、Y的最高有效位个数)。

定点数的除法运算


原码恢复余数法运算

符号位不参与运算,在X/Y中,X、Y的绝对值的补码需要。双符号位补码运算。

步骤:for(i=1;i<=X、Y的最高有效位个数;i++)

{

判断X>Y?

如果X>Y,商1,生成结果左移1位;

如果X<Y,商0,生成结果+Y绝对值补码,生成的结果左移1位;

}

结果为:商,余数,上述中最后生成的结果就是余数的尾数,余数由尾数与阶码表示,阶码一般为负数,左移几次就是几,例如:M*2的-5次方,就是余数产生左移了5次。

由于符号位不参加运算,最后商的符号为X、Y的符号异或产生,余数的符号与被除数的符号相同。


原码恢复余数法例子

原码不恢复余数法运算

符号位不参加运算,参与运算的是绝对值的补码加减。整个过程类似一个循环的判断。假设余数最初为被除数。

判断:余数>除数,商1,结果左移1位,新生成的余数-除数;

余数<除数,商0,结果左移一位,新生的余数+除数;

该判断需要左移n次(即参与运算的数的有效位的个数)。若左移第n次产生的余数为负,需加上除数使余数为正。余数的符号与被除数的符号一致。

补码一位除

补码一位除设计到校正问题,此处只针对精度不严格的除法。

运算:补码双符号位的加减。

规则:被除数(余数)与除数同号,被除数(余数)-除数,若异号,被除数(余数)+除数;新生成的余数如果与除数同号,商1,结果左移一位;若新生成的余数如果与除数异号,商0,结果左移一位。如此往复,直到左移发生了n次(即被除数、除数的有效位个数)。

值得注意的是:最后一次上商,无论余数与除数是否同号,均商1。

到了现在,可以发现,原码的乘除没有符号位直接参与运算,因而都是对绝对值进行操作的。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 160,165评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,720评论 1 298
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,849评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,245评论 0 213
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,596评论 3 288
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,747评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,977评论 2 315
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,708评论 0 204
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,448评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,657评论 2 249
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,141评论 1 261
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,493评论 3 258
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,153评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,108评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,890评论 0 198
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,799评论 2 277
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,685评论 2 272

推荐阅读更多精彩内容

  • 定点小数运算 来自:http://www.eepw.com.cn/article/17893.htm 在DSP世界...
    郝宇峰阅读 8,489评论 0 2
  • 计算机的源头 日常生活中,我们广泛采用十进制计数法。10是十进制计数法的基数,这也是十进制中“十”的由来。 十进制...
    Jack_Cui阅读 2,496评论 0 3
  • 本文是对论文《The Z1: Architecture and Algorithms of Konrad Zuse...
    逸之阅读 4,114评论 15 12
  • 错误 作者:郑愁予 我打江南走过 那等在季节里的容颜如莲花的开落 东风不来,三月的柳絮不飞 你底心如小小的寂寞的城...
    雨瞳FJY阅读 133评论 0 0
  • 一个到处布满了书的家,可以让孩子成为一个读书爱好者。你应该买些什么样的书?去问问你的孩子。如果他们太小而不能有所偏...
    你想看的World阅读 235评论 0 1