设机器数长8位,定点小数,最高位为符号位,65/128的补码为_;-35/64的原码为
1个回答
关注
展开全部
亲,
1. 65/128的补码计算:
首先将65和128化成二进制数:
65 = 01000001
128 = 10000000
然后将65的二进制数补足成8位定点小数的形式:
01000001 = 0.1000001
最后符号位为正,即为0,将0和0.1000001按位取反再加1即可得到65/128的补码:
0.1000001 取反得到 1.0111110
0.0111111 加1得到 1.1000000
因此65/128的补码为 1.1000000。
2. -35/64的原码计算:
首先确定符号位为负,即为1。
然后将35和64化成二进制数:
35 = 00100011
64 = 01000000
接着将35的二进制数补足成8位定点小数的形式:
00100011 = 0.0100011
最后将符号位、整数部分和小数部分合并起来,得到-35/64的原码:
-35/64 = 1.0100011
咨询记录 · 回答于2024-01-16
设机器数长8位,定点小数,最高位为符号位,65/128的补码为_;-35/64的原码为
亲:
1. 65/128的补码计算:
* 首先将65和128化成二进制数:65 = 01000001,128 = 10000000。
* 然后将65的二进制数补足成8位定点小数的形式:01000001 = 0.1000001。
* 接着符号位为正,即为0,将0和0.1000001按位取反再加1即可得到65/128的补码:0.1000001取反得到1.0111110,0.0111111加1得到1.1000000。
* 因此65/128的补码为1.1000000。
2. -35/64的原码计算:
* 首先确定符号位为负,即为1。
* 然后将35和64化成二进制数:35 = 00100011,64 = 01000000。
* 接着将35的二进制数补足成8位定点小数的形式:00100011 = 0.0100011。
* 最后将符号位、整数部分和小数部分合并起来,得到-35/64的原码:-35/64 = 1.0100011。
已知:
x =-0.0110101×2^(21)
Y =0.1100100×2(-11)(此处数均为二进制)
浮点数阶码用4位移码,尾数用8位补码表示(含符号位)。
(1)写出 X , Y 的浮点数表示(要求用IEEE754标准格式:数符 阶码 尾数):
X的浮点数表示为:1 00001001 1010000000000000
Y的浮点数表示为:0 00010011 1000100000000000
(2)如何判定浮点补码加减运算为否溢出,并说明发生溢出时如何处理:
在浮点补码加减运算中,如果最高位(符号位)发生变化,则表示发生了溢出。此时,需要将阶码回滚,同时对尾数进行相应的调整。
(1) 由IEEE754标准可知,浮点数表示为:数符(1位) + 阶码(4位) + 尾数(8位)
对x进行表示:由于x为负数,数符为1;先将小数点左移21位得到:-1101.01;阶码 = 移码 - 偏移量 + 2^(阶码位数-1)-1 = 21 + 2^(3-1)-1 = 26(11010),用4位移码表示为1010;将小数点右移5位得到1.10101,尾数为10101000;因此,x的浮点数表示为:1 1010 1010 1000
对Y进行表示:由于Y为正数,数符为0;将小数点右移11位得到0.0001100100;阶码 = 移码 - 偏移量 + 2^(阶码位数-1)-1 = -11 + 2^(3-1)-1 = -4(1010),用4位移码表示为1101;将小数点左移4位得到1100.1000,尾数为10000100;因此,Y的浮点数表示为:0 1101 1000 1000
(2) 判定浮点补码加减运算是否会溢出的方法:
对于补码加减运算,若减数为正数或者加数为负数,应将其取反后再进行加法运算。这时,如果发生了溢出,则最高位会进一位,即发生了“进位溢出”;否则,没有发生溢出。
对于“进位溢出”的处理方法:
若两数同号,则结果正常,数符位为原数符位;
若两数异号,则不处理结果并抛出“算术溢出”异常。
例如,对x和Y进行相加:
x:1 1010 1010 1000
Y:0 1101 1000 1000
将x和-Y取反得到:-x:0 1010 1010 1000-Y:1 0010 0111 1000
将两数相加得到结果:
x + (-Y):
符号位(最高位) 阶码(4位) 尾数(8位)
= (同号) = (正常结果)
可以发现,结果的阶码比原数的阶码都大了一位,说明发生了进位溢出。因为x和Y符号不同,所以抛出算术溢出异常,不给出结果。
设浮点数阶码为8位(含1位阶符),尾数为8位(含1位数符),则16位二进制原码浮点数对应的十进制真值范围是: 最大正数为?最小正数为?
# 根据IEEE754标准,16位二进制原码浮点数的表示方法为:
- 1位阶符
- 7位阶码
- 1位数符
- 7位尾数
# 最大正数
- 阶符为0
- 阶码为0111111(最大值)
- 数符为0
- 尾数为1111111
- 原码为:0 0111111 01111111
- 转换为十进制为2^127 × (1 + 127/128) ≈ 3.402 × 10^38
# 最小正数
- 阶符为0
- 阶码为0000001(最小值)
- 数符为0
- 尾数为0000001
- 原码为:0 0000001 00000001
- 转换为十进制为2^(-126) × (1 + 1/128) ≈ 1.175 × 10^(-38)
已知[ x ]补= x0x1x2x3……xn,那么[- x ]补=_.
亲,为了求出[- x ]补,我们需要先确定x的补码x补。根据补码的定义,x补等于2n - x。因此,我们可以得到以下步骤:
1. 将x的补码x补表示为x0x1x2x3……xn。
2. 对x补按位取反,即将每一位0变为1,1变为0,得到x’0x’1x’2x’3……x’n。
3. 将x’0x’1x’2x’3……x’n加1,得到x’’0x’’1x’’2x’’3……x’’n。
4. x’’0x’’1x’’2x’’3……x’’n就是[- x ]补的表示。
例如,假设x = 10110,它的位数为5,则x的补码为01010(因为2的5次方为32,32-22=10)。对x的补码按位取反,得到10101。将10101加1,得到10110,即[- x ]补为10110。