教科书中,关于补码乘法的证明,其中有一段是:设x的符号为任意,y的符号为正,
来源:学生作业帮 编辑:大师作文网作业帮 分类:数学作业 时间:2024/10/01 05:25:15
教科书中,关于补码乘法的证明,其中有一段是:设x的符号为任意,y的符号为正,
则有:[x*y]补=[x]补*[y]补=[x]补*y(这个式子的证明过程就不叙述了)
我认为以上论述有点问题,如果我们演算一下,如取x=-0.0101 ,y=+0.0001
则乘积的真值x*y=-0.00000101,乘积的补码[x*y]补=1.11111011 ,而补码的乘积,即[x]补*[y]补=1.1011*0.0001=0.00011011 ,这显然矛盾了.
不知我的推理有没有错误,
谁能给出一个具体例子来证明这个公式的正确性
则有:[x*y]补=[x]补*[y]补=[x]补*y(这个式子的证明过程就不叙述了)
我认为以上论述有点问题,如果我们演算一下,如取x=-0.0101 ,y=+0.0001
则乘积的真值x*y=-0.00000101,乘积的补码[x*y]补=1.11111011 ,而补码的乘积,即[x]补*[y]补=1.1011*0.0001=0.00011011 ,这显然矛盾了.
不知我的推理有没有错误,
谁能给出一个具体例子来证明这个公式的正确性
x=-0.0101 -0.0101这就是个补码 ,我们说x=-7 ,-7就是补码,补码指的是数字在计算机内部是以补码来表示的,就是计算机内的数字都是补码,不存在原码和反码,原码和反码仅仅是书上为了解释补码才弄出来的概念,并且浮点数的补码和整数的补码规则不一样,只有符号位的概念和整数一样,浮点数的 -1.0和整数的-1纯粹两回事,浮点数的负数仅仅是最高位的符号位变为1了,有效数字位不变
按IEEE754规范,float格式的-0.0101的32位补码是这样的:
10111110 10100000 00000000 00000000
0.0101的32位补码是这样的
00111110 10100000 00000000 00000000
仅仅是符号位的区别
如果是定点小数
x原=-0.0101 既然是补码,那就要知道和那个值求补,也就是要知道是多少位的,假设总共12位 所以-0.0101的补码是111111111.1011 ,那么111111111.1011*0.0001就是1111.11111011,同样的[x*y]补=1.11111011也是1111.11111011,既然是按位取反,就要把整数部分全部取反,而不是仅仅一个1,-0.0101是-0000000000.0101,要把所有的0都取反,而不是仅仅一位,你就是在这里搞错了
所以实际上我们根本不需要关心这个补码的表现形式,只要知道x=-0.0101这就是个补码就行了,x就是x补,x在机器内就是以补码表示的
x=-0.0101 , y=+0.0001 ,x*y=-0.00000101这就是个补码 也就是[x*y]补=-0.00000101
[x*y]补=[x]补*[y]补=[x]补*y 这个公式实际上就是在说:x*y==x*y==x*y,等于废话
我认为上面都讲得很清楚了,再给你个例子:
-0.5*0.5
以8位定点小数为例:
-0.5的原码是0000000.1,补码是1111111.1 不是1.1 (你就是这里搞错了)
1111111.1*0.1=111111.11
-0000000.1*0.1==-0.01,补码是111111.11
这就是一回事
按IEEE754规范,float格式的-0.0101的32位补码是这样的:
10111110 10100000 00000000 00000000
0.0101的32位补码是这样的
00111110 10100000 00000000 00000000
仅仅是符号位的区别
如果是定点小数
x原=-0.0101 既然是补码,那就要知道和那个值求补,也就是要知道是多少位的,假设总共12位 所以-0.0101的补码是111111111.1011 ,那么111111111.1011*0.0001就是1111.11111011,同样的[x*y]补=1.11111011也是1111.11111011,既然是按位取反,就要把整数部分全部取反,而不是仅仅一个1,-0.0101是-0000000000.0101,要把所有的0都取反,而不是仅仅一位,你就是在这里搞错了
所以实际上我们根本不需要关心这个补码的表现形式,只要知道x=-0.0101这就是个补码就行了,x就是x补,x在机器内就是以补码表示的
x=-0.0101 , y=+0.0001 ,x*y=-0.00000101这就是个补码 也就是[x*y]补=-0.00000101
[x*y]补=[x]补*[y]补=[x]补*y 这个公式实际上就是在说:x*y==x*y==x*y,等于废话
我认为上面都讲得很清楚了,再给你个例子:
-0.5*0.5
以8位定点小数为例:
-0.5的原码是0000000.1,补码是1111111.1 不是1.1 (你就是这里搞错了)
1111111.1*0.1=111111.11
-0000000.1*0.1==-0.01,补码是111111.11
这就是一回事
x的补码是1101,y的补码是0010,则x-y的值的补码为多少(x和y都是用4位二进制表示的有符号
设一个带符号的二进制数A的补码为10101101,A的绝对值为:
x的补码是1011,y的补码是0010,则x-y的值的补码为多少?
X的补码是1011,y的补码是0010,则x-y的值的补码为?要求有具体的过程~
ASCII码32H表示的字符是设计算机中参与运算的两数X和Y均为补码形式,其中X=87H,Y=B4H,当计算机执行X-Y
负数的补码为何符号位取反后为1?
1.二进制数11101001,若为无符号数,其十进制数值是( ); 若为补码表示的有符号数,其十进制数值是( )
一般有符号数编程时用补码还是用高位为1、0的编码
求函数y=(x-1)(x+1)^的导数 (其中^为平方符号为平方
0f0是带符号的二进制数补码,其十进制数表示为?
乘法的符号有哪些
在有符号数中1000 0000是正数还是负数?它的补码是什么?