对于补码的一位乘法的一点疑问~~求各位解答
X= - 0.1101 Y= - 0.1011 求(XY)补。用B寄存器存放被乘数。则+B=X补=11.0011 (此处,那个负号怎么不见了??)
-B=( - X)补=00.1101 (此处是什么算出来的??)
个人对上题的理解是,+B=+X= - 0.1101 ,但是计算机不能做减法,只能加上它的补码 。所以+B=X补=11.0011
-B=(-X)补 而 -X = 0 . 1101正数的补码是它本身 所以 -B=-X补=00.1101
不知道对不对,如有错的地方请指正。
还有一个问题, 为什么要叫一位乘法??
第一个问题(负号怎么不见了??) 解答:因为X为负数,所以其原码是11.1101(首位的两个11是符号位,为什么要是两位呢?是因为要保证运算结果正确防止溢出。)然后再得到X的补码(原码除符号位外其余数取反末位加1)便是11.0011了。
第二个问题(此处是怎么算出来的??) 解答 : 和上面一样,由于-B为正数所以补码与原码相同(首位的两个00一样是符号位)
第三个问题 (为何叫一位乘法??) 解答 : 计算机在运算时一次取一位进行运算就叫做一位乘法,当然也有两位乘(即一次取两位进行运算。)
第四个问题解答 : 呵呵,关于变补我也不知道!!!:ton:
还有一个问题, 我是在中科大的教学视频上看到的,主讲人罗克露。
她说 某数的 补码表示 和 变补是有区别的。
一个数如果叫用补码表示,如果为负,符号位不变,取反加一。正数还是它本身;
如果是变补,不管正数还是负数,符号位都要改变,取反加一。
但是我在网上查的,都是说正数的原码和补码都是它本身啊而且也没有提到过什么变补和补码表示.....
对她讲的有点不太理解,望有知道的同学告知~~ 0. 负号不见,因为计算机存储有符号数字是通过补码的形式存储的,-0.1101的补码就是11.0011。这里采取双符号为11,为了保存进位。
1. 无符号数字直接存储,不需要转成补码,就算转化,还是原来的数。
2. 一位乘法,个人理解在计算过程中每次都右移一位,所以叫做一位乘法。
3. 变补主要是用在计算比如(X)补-(Y)补这种运算,实际上计算机是这样操作的(X)补+(-Y)补,如果不采取变补的话就是对Y取负再得到(-Y)补码。或者直接对(Y补)采取变补操作结果同样是(-Y)补,就是你说的不管是正还是负,符号位都改变,取反加一。变补就是一种运算方式而已,不用想太多了,只要知道一种计算方式就可以啦。这是我的理解。
本帖最后由 oggplay 于 2014-8-14 14:40 编辑
你这个问题的例子过于复杂了,先不说牵扯到补码问题,同样浮点数也是一个问题(虽然例题有些问题)。
建议先看整数补码,然后再看浮点数。看完过后你会发现这个例子是那么的不切实际,仅仅是一个例子。
进来学习一下 已经解决了,怎么还有悬赏呢。
页:
[1]