用补码一位乘法计算x×y。(写出步骤)x=0.10110,y= -0.00011。
1个回答
关注
展开全部
X的补码为0.1010,-X的补码为1.0110,Y的补码为1.1001(低位有4位)。
高位 低位(乘数补码处理值) 说明
00 0000 |110010 最低位10,高位加-X的补码
11 0110
————
11 0110
11 1011 01|1001 执行右移,最低位01,高位加X的补码
00 1010
————
00 0101
00 0010 10|1100 执行右移,最低位00,高位加0
00 0000
————
00 0010
00 0001 010|110 执行右移,最低位10,高位加-X的补码
11 0110
————
11 0111
11 1011 1010|11 执行右移,乘数补码被右移出去,进行最后一次
运算,最低位11,高位加0
————
11 1011 1010|11
最终结果为:**双符号位**结果为**双符号位**结果为**双符号位**结果为**双符号位**结果为**双符号位**结果为**双符号位**结果为**双符号位**结果为**双符号位**结果为**双符号位**结果为**双符号位**结果为**双符号位**结果为**双符号位**结果为**双符号位**结果为**双符号位**结果为**双符号位**结果为**双符号位**结果为**双符号位**结果为**双符号位**结果为**双符号位**结果为**双符号位**结果为**双符号位**结果为**双符号位**结果为**双符号位**结果为**双符号位**结果为**双符号位**结果为**双符号位**结果为
咨询记录 · 回答于2024-01-07
用补码一位乘法计算x×y。(写出步骤)x=0.10110,y= -0.00011。
X的补码为0.1010,-X的补码为1.0110,Y的补码为1.1001(低位有4位)。
高位 低位(乘数补码处理值) 说明
00 0000 |110010 最低位10,高位加-X的补码
11 0110
————
11 0110
11 1011 01|1001 执行右移,最低位01,高位加X的补码
00 1010
————
00 0101
00 0010 10|1100 执行右移,最低位00,高位加0
00 0000
————
00 0010
00 0001 010|110 执行右移,最低位10,高位加-X的补码
11 0110
————
11 0111
11 1011 1010|11 执行右移,乘数补码被右移出去,进行最后一次
运算,最低位11,高位加0
————
运算结果为:
最终结果为:
第二次加的时候为什么为000101呀?
两个00000001意义不同第一个是操作码,表示装载这个操作第二个是操作数,表示1这个数(二进制)这里只是刚好值相等而已。一般计算机操作的格式都为 “操作码 操作数”
可是第二次异或的时候前两位11与00不应该是11吗?
000000000 到 111111111 共九位的二进制
要求把所有任意两个数“异或运算”结果罗列出来。2的9次方=512,C 512选择2个的组合=130816次计算
但是我们也可以看出结果:最大是111111111,九个1;最小的是000000000,九个0。
要求是统计出结果是 0000到1001。比如异或结果是 “111111111”,输出结果是 9个1,即用 1001表示它的结果;
异或结果是 “000000000”,9个0没有“1”的出现,用 0000表示它的结果。反之,“000011101”输出结果4个1,即用 0100表示它的结果。1的出现的个数,就是我们需要的结果。
比如:
* 000000000^000000001=**000000001**;第一组计算,输出**0001**(1个1)
* ……
* ……
* ……
* ……
* ……
* ……
* ……
* ……
* ……
* ……
* ……
* ……
* ……
* ……
* ……
* ……
* ……
* ……
* ……
* ……
* ……
* ……
* ……
* ……
* ……
* ……
* **00000000^111111111=**1**1**1**1**1**1**1**1**1**;输出**1**(9个1)
* **……**
* **……**
* **……**
* **……**
* **……**
* **……**
* **……**
* **……**
* **……**
* **……**
* **……**
* **……**
* **……**
* **……**
* **……**
* **……**
* **……**
* **……**
* **……**
* **……**
* **……**
* **……**
* **……**
* **……**
* **……**
* **……**