发布于2020-03-07 18:05 阅读(1721) 评论(0) 点赞(25) 收藏(5)
两个补码表示的数相加,符号位参加运算,且两数和的补码等于两数补码之和。两个数不管正负,均用补码表示,符号位应当做数值参加运算,符号位相加所产生的进位要丢掉,结果为补码。
X=0.1011 Y=-0.0101,求 X+Y=?
解:
[X]补=0.1011,[Y]补=1.1011
[X]补+[Y]补 = 0.1011+1.1011 = 0.0110 = [X+Y]补
所以 X+Y = 0.0110
对于减法,(-Y)的补码称为[Y]补的机器负数,由[Y]补求[-Y]补的过程称为将[Y]补“变补”或对[Y]补求补,由[Y]补求[-Y]补的方法是,不管Y的真值为正或为负,都是将[Y]补的各位连同符号位在内全变反后,最低位加1。
将“某数的补码表示”与“变补”这两个概念区分开来。一个负数由原码表示转换成补码表示时,符号位是不变的,仅对数值位各位变反,末位加“1”。而变补则不论这个数的真值是正是负,一律连同符号位一起变反(所有的二进制位一起变反),末位加“1”。
X=-0.1011,Y=-0.0110, 求X-Y=?
解:
[X]补=1.0101,[Y]补=1.1010,[-Y]补=0.0110
[X]补+[-Y]补 = 1.1011 = [X-Y]补
所以 X-Y = 1.0101 = -0.0101
原码一位乘法是从手算演变而来的。即用两个操作数的绝对值相乘,乘积的符号为两操作数符号的异或值(同号为正,异号为负)。
定点原码一位乘法(Unsigned Binary Multiplication)
设被乘数[X]原=XfX1X2……Xn-1Xn
乘 数[Y]原=YfY1Y2…Yn-1Yn
乘 积[Z]原=ZfZ1Z2……Z2n-1Z2n
由于机器字长通常仅有n位,两个n位数相乘结果为2n位;且仅仅有两个操作 数相加的加法器,难以胜任将n个位积一次相加起来。因此,在计算机中不能直 接照搬手工计算乘法的方法,必须进行修改使其便于计算机实现。
已知X=0.1101,Y=-0.1011,用原码一位乘计算X * Y=?
解:
[X]原=0.1101,[Y]原=1.1011
|X|=00.1101(用双符号位表示),|Y|=0.1011(用单符号位) ,部分积初值:00.0000ji
- 乘数最低位为 1 ,所以00.0000(部分积)+00.1101(被乘数) = 00.1101;再向右移一位:00.01101
- 乘数往前数一位为 1 ,00.01101 + 00.1101 = 01.00111;再向右移一位:00.100111
- 乘数往前数一位为 0;不需要加上被乘数了,只需右移一位:00.0100111
- 乘数往前数一位为 1,00.0100111 + 00.1101 = 01.0001111,右移一位:00.10001111
- 符号可按异或运算得到(同号相乘为正,异号相乘为负),这里是异号,所以符号位是 1
- 因此[X*Y]原 = 1.10001111;X*Y = -0.10001111
Yn (高位) | Yn+1 (低位) | 操作 |
---|---|---|
0 | 0 | 部分积右移一位 |
0 | 1 | 部分积加[X]补, 右移一位 |
1 | 0 | 部分积加[-X]补, 右移一位 |
1 | 1 | 部分积右移一位 |
已知X=-0.1101,Y=0.1011,用补码一位乘计算X * Y=?
[X]补=11.0011,[-X]补=00.1101(用双符号表示),
[Y]补=0.10110(用单符号位), 部分积:00.0000
1. 0.10110(乘数)上 Y4Y5 位上的是1 0,所以部分积加[-X]补,再右移一位:00.01101
2. 0.10110(乘数)上 Y3Y4 位上的是1 1,所以部分积右移一位:00.001101
3. 0.10110(乘数)上 Y2Y3 位上的是0 1,所以部分积加[X]补,再右移一位:11.1011001
4. 0.10110(乘数)上 Y1Y2 位上的是1 0,所以部分积加[-X]补,再右移一位:00.01000001
5. 0.10110(乘数)上 Y0Y1 位上的是0 1,所以部分积加[X]补,最后一步不移位:11.01110001
6. 所以[X*Y]补 = 1.01110001,X*Y = -0.10001111
原文链接:https://blog.csdn.net/weixin_43706664/article/details/104692481
作者:我Lovepython
链接:https://www.pythonheidong.com/blog/article/246866/14d36138e0fa97b74dc1/
来源:python黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 python黑洞网 All Rights Reserved 版权所有,并保留所有权利。 京ICP备18063182号-1
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!