假定计算机机器字长为32位,求-100带符号右移4位与无符号右移4位的结果
1个回答
关注
展开全部
32位计算机字长,用于表示整数,共有2的32平方个。所以,无符号整数的范围是0~2^32或0~4294967296。
咨询记录 · 回答于2022-10-30
假定计算机机器字长为32位,求-100带符号右移4位与无符号右移4位的结果
32位计算机字长,用于表示整数,共有2的32平方个。所以,无符号整数的范围是0~2^32或0~4294967296。
8位二进制所能表示的无符号整数范围为0~255;8位二进制所能表示的带符号整数范围为-128~127。无符号整数与带符号整数:无符号数(Unsigned number)是相对于有符号数而言的,指的是整个机器字长的全部二进制位均表示数值位,相当于数的绝对值。
它们所占的字节数其实是一样的,但是有符号的需要安排一个位置来表达我这个数值的符号,因此说它能表示的绝对值就要比无符号的少一半。
对于带符号右移,若为负数,则在存储时首位表示符号位,其值为1,表示该值是负数的移位,在移位过程中,高位补1,若符号位是0,表示是正数,在移位过程中高位补零,两者的前提是符号位保持不变:
对于负数的右移:因为负数在内存中是以补码形式存在的,所有首先根据负数的原码求出负数的补码(符号位不变,其余位按照原码取反加1),然后保证符号位不变,其余位向右移动到X位,在移动的过程中,高位补1.等移位完成以后,然后保持符号位不变,其余按位取反加1,得到移位后所对应数的原码。即为所求。
举例1:
-100带符号右移4位。-100二进制转换为:1100100
-100原码: 10000000 00000000 00000000 01100100
-100补码: 保证符号位不变,其余位置取反加1
11111111 11111111 11111111 10011100
那应该怎么填
右移4位 : 在高位补1
11111111 11111111 11111111 11111001
-100无符号右移4位。
-100原码: 10000000 00000000 00000000 01100100
-100补码: 保证符号位不变,其余位置取反加1