补码计算诺某整数的16位补码为FFFFH,则该数的十进制为多少 我怎么感觉-1和65535都符合要求 可是答案却是-1 求详解 (另为-128补码怎么算 符合位最高位怎么搞)
来源:学生作业帮助网 编辑:作业帮 时间:2024/11/15 08:34:16
补码计算诺某整数的16位补码为FFFFH,则该数的十进制为多少 我怎么感觉-1和65535都符合要求 可是答案却是-1 求详解 (另为-128补码怎么算 符合位最高位怎么搞)
补码计算
诺某整数的16位补码为FFFFH,则该数的十进制为多少 我怎么感觉-1和65535都符合要求 可是答案却是-1 求详解 (另为-128补码怎么算 符合位最高位怎么搞)
补码计算诺某整数的16位补码为FFFFH,则该数的十进制为多少 我怎么感觉-1和65535都符合要求 可是答案却是-1 求详解 (另为-128补码怎么算 符合位最高位怎么搞)
首先,叫你计算补码,最好的方式不是将这个16进制的数转换为10进制,而是将其转换为2进制.
回到这个题目,正确的想法应该是FFFF(H)=1111,1111,1111,1111(B),也就是将其转换为2进制考虑问题.
这个2进制数的补码首位是1,说明这个数是个负数.(首位是0是非负数,首位是1则是负数)
你再看看补码的定义,正数补码是它本身,负数补码就是其反码+1.
那回到原题,这个数的反码就是:1111,1111,1111,1111(B)-1=1111,1111,1111,1110(B).
根据反码定义,你不难得出数的原码是1000,0000,0000,0001(B)=-1.
(首位符号位不变,其它位取反)
同样的方法,根据原码,反码,补码的定义,你也可以计算-128的补码.但是你没说要求的是多少位补码,我当求8位补码来考虑了.
第一步:转换为2进制:-128转化为8位二进制数为1111,1111(B)
第二步:求其反码:1000,0000(B)
第三步:求补码:就是反码+1=1000,0001(B)=-1
若是求16位补码:则同理:其2进制补码为1111,1111,1000,0001(B),我就不转换10进制了,有需要可以用windows自带的计算器,用“科学型”进行进制转换.
这种题目,对于刚学习的来说,不能急,关键看定义,通过定义来计算.定义都是用2进制来考虑的,你为什么要想换成10进制去算?对吧?