计算机组成原理——2.1位数扩展

一、复习原码、反码、补码、移码

原码、反码、补码、移码全是有符号数。

以下全是4位的情况

原码:0的表示有两种,取值范围是[-7,7]

反码:0的表示有两种,取值范围是[-7,7]

补码:0的表示为0000,取值范围是[-8,7],-8的表示为1000

           二进制的表示顺序1000,1001,1010,......,0000,0001,0010,......,0111

移码:0的表示为1000,取值范围是[-8,7],-8的表示为0000

          二进制的表示顺序0000,0001,0010,......,1000,1001,1010,......,1111

正数:原码=反码=补码

负数:

原码—>补码:除符号位,其余位全部取反,末位加1

补码—>原码:除符号位,其余位全部取反,末位加1

x的补码—>-x的补码:包括符号位全部取反,末位加1

二、位数扩展

有符号数和无符号数的转换:二进制数相同,只是解释不同。例如:1001。无符号数的解释为9,有符号数的解释为-1.

长字长到短字长:高位截断。例如16位数到8位数,9-16的位数全部截断

短字长到长字长:扩展高位,如果是有符号数且是负数,高位补1.如果有符号数且是正数,高位补0。如果是无符号数,高位补0.

例1:16位补码0x8FA0扩展为32位应该是(        )

答案:0xFFFF 8FA0

解析:8FA0=1000 1111 1010 0000.因为是补码(有符号数),这是一个负数,从16位转到32位,前面补1,变成1111 1111 1111 1111 1000 1111 1010 0000,化为十六进制,0xFFFF 8FA0

例2:执行下列语句:unsigned short x=65530; unsigned int y=x;,则y的机器数是(        )

答案:0000FFFAH

解析:因为x,y都是unsigned,所以x,y都是无符号数;又因为y=x,x是short,y是int,所以是从short型转为int型,也就是从16位转到32位。因为2的16次方-1(FFFFH)是65535,所以65530是FFFAH。前面再补16个0,也就是0000 FFFAH.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值