设机器数字长为8位(含1位符号位), A=13/64, B-39164, 求[A]补,(B]补[-A]补 [-B]补 [A-B]补及A-B真值。
时间: 2023-09-26 19:12:35 浏览: 75
首先将13/64转化为二进制小数:
0.001011
因为是正数,所以符号位为0。将这个二进制小数乘以2^8,得到的结果为26.56,取整为26,即[A]补为00011010。
将B转化为二进制,得到1001100011100100,然后在前面补上6个0,使其长度为8位,即000000001001100011100100。因为是正数,所以符号位为0。取反得到其补码为111111110110011100011100,即[B]补为111111110110011100011100。
将-A转化为二进制,得到11111110.110101,因为是负数,所以符号位为1。将这个二进制数乘以2^8,得到的结果为-26,即[-A]补为10011110。
将-B转化为二进制,得到1001100011100100,然后在前面补上6个1,使其长度为8位,即11111111001100011100100。因为是负数,所以符号位为1。取反得到其补码为000000001100111000110100,即[-B]补为000000001100111000110100。
将A-B的真值计算出来,先将A和B转化为小数形式:
A=0.001011
B=1001100.011100
将B右移6位,使其小数点和A对齐:
0000000.1001100
然后将A和B相减,得到:
-0.011011
将其转化为二进制,得到11111110.100101,最后乘以2^8,得到真值为-27,即A-B的真值为-27。所以[A-B]补为10010001。
相关问题
2. 已知十进制数x=25/32,y=-21/64,设机器数字长8位(含1位符号位),计算[x+y]补和[x-y]补。
### 回答1:
首先将十进制数转换为二进制数,将小数部分转换为二进制时可以采用乘2取整法,即将小数部分不断乘2,取整数部分,直到小数部分为0或达到指定的位数。
对于x=25/32,整数部分为0,小数部分转换为二进制为0.01,共计8位,即x的二进制表示为0.01000000。
对于y=-21/64,整数部分为-1,小数部分为0.101010,共计8位,即y的二进制表示为1.10101000。
接下来进行补码运算:
[x+y]补 = [0.01000000 + 1.10101000]补 = [1.11101000]补 = -0.00111000
[x-y]补 = [0.01000000 - 1.10101000]补 = [1.01111000]补 = -0.10001000
因为机器数字长8位,所以需要对结果进行舍入。舍入规则为:如果最后一位小于5,则舍去;如果最后一位大于等于5,则进位。根据这个规则,[x+y]补舍为0,[x-y]补进为1,因此最终结果为:
[x+y]补和[x-y]补分别为0和-0.10000000。
### 回答2:
首先将十进制数转换为二进制数。
x=25/32=0.78125
将0.78125乘以2,并取整数部分,得到1
将0.5625乘以2,并取整数部分,得到1
将0.125乘以2,并取整数部分,得到0
将0.25乘以2,并取整数部分,得到0
将0.5乘以2,并取整数部分,得到1
将0乘以2,并取整数部分,得到0
所以,0.78125的二进制表示为0.11010。
y=-21/64=-0.328125
将-0.328125乘以2,并取整数部分,得到0
将-0.65625乘以2,并取整数部分,得到0
将-0.3125乘以2,并取整数部分,得到0
将-0.625乘以2,并取整数部分,得到1
将-0.25乘以2,并取整数部分,得到1
将-0.5乘以2,并取整数部分,得到1
将-1乘以2,并取整数部分,得到0
所以,-0.328125的二进制表示为0.101011。
接下来将二进制数转换为补充码。
对于x=0.11010,小数点前的部分为正数,符号位取0。小数部分乘以2^8,得到二进制补码为 01101100。
对于y=0.101011,小数点前的部分为负数,符号位取1。小数部分乘以2^8,得到二进制补码为 11011010。
计算[x y]补和[x-y]补。
[x y]补是将两个数的补码相加,得到01001010。
[x-y]补是将两个数的补码相减,得到00110010。
最后,将补码转换为十进制数。
[x y]补的十进制表示为01001010=74。
[x-y]补的十进制表示为00110010=50。
### 回答3:
首先,我们要将十进制数转换为二进制的机器数字。
对于x=25/32,我们需要将其转换为二进制小数。
25/32的二进制表示是0.011001。因为机器数字长8位,我们需要对其进行舍入。
舍入后,x的机器数字表示为0.01100100。
对于y=-21/64,同样地,我们需要将其转换为二进制小数。
-21/64的二进制表示是-0.001010。同样地,我们需要对其进行舍入。
舍入后,y的机器数字表示为1.11011000。
现在,我们可以计算[x y]补和[x-y]补。
要计算[x y]补,首先需要将x和y的机器数字相加,然后再取反。
0.01100100 + 1.11011000 = 0.01100100 - 0.00101000 = 0.01011100。
取反后,[x y]补的机器数字为1.10100100。
要计算[x-y]补,首先需要将x和y的机器数字相减,然后再取反。
0.01100100 - 1.11011000 = 0.01100100 + 0.00101000 = 0.10001100。
取反后,[x-y]补的机器数字为1.01110100。
所以,[x y]补的机器数字为1.10100100,[x-y]补的机器数字为1.01110100。
设机器数字长为8位(含1位符号位),若A=-25,分别用原码和补码表示并右移三位后所对应的真值分别为
首先将A的绝对值转换为二进制,即25的二进制为:00011001。
原码表示法中,最高位是符号位,0表示正数,1表示负数,所以A的原码为:10011001。
补码表示法中,正数的补码与其原码相同,负数的补码为其原码按位取反再加1。所以A的补码为:11100111。
右移三位后,最高位应该补上原来最高位的值,即符号位。
对于原码,符号位为1,补1;对于补码,符号位也为1,补1。
所以,原码右移三位后所对应的真值为:11110011,即-31。
补码右移三位后所对应的真值为:11111001,即-15。