浮点数计算机基础,计算机基础知识

59f62c0d5424d7f73adddf37ae9ca1dc.png

2013-07-21

哪位大仙教教我机器字长为16位,N=-

计算机中的数是用二进制数来表示的,数的符号也是用二进制数表示的。在机器中,把一个数连同其符号在内数值化表示的数称为机器数。一般用最高有效位来表示数的符号,正数用0表示,负数用1表示。机器数可以用不同的码制来表示,常用的有原码、补码和反码表示法。 由于多数机器的整数采用补码表示法,80x86机也是这样。这里只介绍补码表示法。

补码表示法中正数采用符号-绝对值表示,即数的最高有效位0表示符号为正,数的其余部分则表示数的绝对值。例如,假设机器字长为8位,则00000001,[+127]补=01111111,[+0]补=00000000。

当用补码表示法来表示负数时则要麻烦一些。负数X用2n...全部

计算机中的数是用二进制数来表示的,数的符号也是用二进制数表示的。在机器中,把一个数连同其符号在内数值化表示的数称为机器数。一般用最高有效位来表示数的符号,正数用0表示,负数用1表示。机器数可以用不同的码制来表示,常用的有原码、补码和反码表示法。

由于多数机器的整数采用补码表示法,80x86机也是这样。这里只介绍补码表示法。

补码表示法中正数采用符号-绝对值表示,即数的最高有效位0表示符号为正,数的其余部分则表示数的绝对值。例如,假设机器字长为8位,则00000001,[+127]补=01111111,[+0]补=00000000。

当用补码表示法来表示负数时则要麻烦一些。负数X用2n-|X|来表示,其中n为机器的字长。当n=8时,[-1]补=28-1=11111111,而[-127]补=28-127=10000001,显然,最高有效位为1表示该数的符号为负。

应该注意,[-0]补=28=00000000,所以在补码表示法中0只有一种表示,即00000000。对于10000000这个数,在补码表示法中被定义为-128。这样,8位补码能表示数的范围为-128~+127。

下面介绍一种比较简单的办法来写出一个负数的补码表示:先写出与该负数相对应的正数的补码表示(用符号-绝对值法),然后将其按位求反(即0变1,1变0),最后在末位(最低位)加1,就可以得到该负数的补码表示了。

例1。13 机器字长为16位,写出N=-117D的补码表示。

+117D可表示为

0000

0000

0111

0101

按位求反后为

1111

1111

1000

1010

末位加1后

1111

1111

1000

1011

用十六进制数表示为

F

F

8

B

即[-117D]补=FF8BH

例1。

4 如机器字长为8位,则-46D的补码表示为:

+46D可表示为

0010

1110

按位求反后为

1101

0001

末位加1后

1101

0010

用十六进制数表示为

D

2

即[-46D]补=D2H

在这里,顺便说明一下,用补码表示数时的符号扩展问题。

所谓符号扩展是指一个数从位数较少扩展到位数较多(如从8位扩展到16位,或从16位扩展到32位)时应该注意的问题。对于用补码表示的数,正数的符号扩展应该在前面补0,而负数的符号扩展则应该在前面补1。

例如,我们已经知道如机器字长为8位,则[+46]补=00101110,[-46]补=11010010;如果把它们从8位扩展到16位,则[+46]补=0000000000101110=002EH,[-46]补=1111111111010010=FFD2H。

收起

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值