源码乘法符号位相异或(按位运算符)
本文目录一览:
什么是原码一位乘法?
原码一位乘法:
在定点计算机中,两个原码表示的数相乘的运算规则是:乘积的符号位由两数的符号按异或运而乘积的数值部分则是两个正数相乘之积。设n位被乘数和乘数用定点小数表示:
被乘数
[x]原
xf
.x0
x1
x2
xn
乘数
[y]原
yf
.y0
y1
y2
yn
则
乘积
z
]原
xf⊕yf
(0.
x0
x1
x2
„xn)(0
y1
y2
„yn)
式中,xf为被乘数符号,yf为乘数符号。
乘积符号的运算法则是:同号相乘为正,异号相乘为负。由于被乘数和乘数和符号组合只有(xf
yf
00,01,10,11),因此积的符号可按“异或”(按位加)运算得到。
数值部分的运算方法与普通的十进制小数乘法相类似,不过对于用二进制表达的数来说,其
更为简单一些:从乘法y的最低位开始,若这一位为“1”,则将被乘数x写下;若这一位为“下全0。然后再对乘数y的高一位进行的乘法运算,其规则同上,不过这一位乘数的权与最低位不一样,因此被乘数x要左移一位。依次类推,直到乘数各位乘完为止,最后将它们统统加起来最后乘积z
原码乘法是?
答案为
A
解释:在定点计算机中,两个原码表示的数相乘的运算规则是:乘积的符号位由两数的符号位按异或
运算得到,而乘积的数值部分则是两个正数相乘之积。
16进制的原码乘法,补码乘法是怎样的
原码乘法计算时只计算原码绝对值部分,结果的符号是根据符号位通过异或来求得.
补码乘法因符号位参与运算,可以完成补码数的“直接”乘法,而不需要求补级.这种直接的方法排除了较慢的对2求补操作,因而大大加速了乘法过程.
原码:一个整数,按照绝对值大小转换成的二进制数,称为原码.
比如00000000000000000000000000000101是5的原码.
反码:将二进制数按位取反,所得的新二进制数称为原二进制数的反码.
取反操作指:原为1,得0;原为0,得1.(1变0;0变1)
比如:将00000000000000000000000000000101每一位取反,得11111111111111
111111111111111010.
称:11111111111111111111111111111010是00000000000000000000000000
000101的反码.
反码是相互的,所以也可称:
11111111111111111111111111111010和000000000000000000000000000001
01互为反码.
补码:反码加1称为补码.
也就是说,要得到一个数的补码,先得到反码,然后将反码加上1,所得数称为补
码.
比如:00000000000000000000000000000101的反码是:111111111111111111
11111111111010.
那么,补码为:
11111111111111111111111111111010+1=111111111111111111111111111
11011
所以,-5在计算机中表达为:11111111111111111111111111111011.转换为十
六进制:0xFFFFFFFB.
已知X=--0.1011,Y=-0.1001采用原码一位乘法计算X*Y
x源码乘法符号位相异或的原码为1.1011,y的为1.1001
两者先是符号位相异或得0源码乘法符号位相异或;再用无符号的两个二进制数相乘,这个相乘和十进制数类似。
原码一位乘法中,符号位与数值位是分开进行计算的。运算结果的数值部分是乘数与被乘数数值位的乘积,符号是乘数与被乘数符号位的异或。原码一位乘法的每一次循环的操作是最低位为1,加被乘数的绝对值后右移1位;最低位为0,加0后右移1位。几位乘法就循环几次。
编码方式
原码是有符号数的最简单的编码方式,便于输入输出,但作为代码加减运算时较为复杂。一个字长为n的机器数能表示不同的数字的个数是固定的2^n个,n=8时2^n=256;用来表示有符号数,数的范围就是 -2^(n-1)-1 ~ 2^(n-1)-1,n=8时,这个范围就是 -127 ~ +127。
以上内容参考源码乘法符号位相异或:百度百科-原码