11位补码可表示的整数取值范围是-1024~1023,有人可以详细的用二进制方法解释下如何得出-1024的吗?

2024-11-27 00:51:02
推荐回答(4个)
回答1:

二进制数最高位是符号位,正数最大为011111111111,即为1023,01111111111对应的负数补码为连同符号位求反加1,为10000000001
即为:-1023,10000000001不是最小,再减1为10000000000,即为-1024
随便一个负数:比如-4的补码为:1100,-5的补码为:1011
-4-1=-5
1100-1=1011

回答2:

二进制数最高位是符号位,正数最大为011111111111,即为1023,01111111111对应的负数补码为连同符号位求反加1,为10000000001即为:-1023,10000000001不是最小,再减1为10000000000,即为-1024

随便一个负数:比如-4的补码为:1100,-5的补码为:1011

-4-1=-5
1100-1=1011

回答3:

这个问题,不用算,分析一下即可得出这个结论。

11 位二进制,共有 2^11 = 2048 个不同的代码。

用补码形式代表有符号数时,就分成两个相等的部分,各有 1024 个。

用一半代表负数,即:-1~-1024。

用一半代表 0 和正数,即:0~1023。

综合,其表示范围,就是-1024~+1023。

-----------------------

因为-1024 并没有 11 位的原码和反码。

所以,用“取反加一”求补码,就无处下手。

 

但是,补码,就是补码。与原码反码,毫无关系。

求补码,不需要走“原码反码符号位取反加一”这条路。

按照“补码的定义式”,一步,就求出来了。

 

补码的定义式如下:

  X >= 0, [X]补 = X;

  X < 0, [X]补 = 模-|X|。

式中:  模=2^n, n 是二进制的位数。


11 位补码,模就是 2^11 = 2048,所以:

 [-1024]补=2048-1024 = 1024。

如果你还需要二进制,你就自己转换一下:

 1024 = 100 0000 0000(二进制)。

 

求补码,不要用“原码反码符号位取反加一”。

原码反码符号位取反加一”这方法,就是个大坑。

回答4:

42486(10) = 1010010111110110(2) Unsigned

1010010111110110(2) Signed = -(101101000001001+1)(2)

= -23050(10)

-----------
(1)正数的补码:与原码相同。 例如,+9的补码是00001001。
(2)负数的补码:符号位为1,其余位为该数绝对值的原码按位取反;然后整个数加1。 例如,-7的补码:因为是负数,则符号位为“1”,整个为10000111;其余7位为-7的绝对值+7的原码0000111按位取反为1111000;再加1,所以-7的补码是11111001。
已知一个数的补码,求原码的操作分两种情况:
(1)如果补码的符号位为“0”,表示是一个正数,所以补码就是该数的原码。
(2)如果补码的符号位为“1”,表示是一个负数,求原码的操作可以是:符号位为1,其余各位取反,然后再整个数加1。 例如,已知一个补码为11111001,则原码是10000111(-7):因为符号位为“1”,表示是一个负数,所以该位不变,仍为“1”;其余7位1111001取反后为0000110;再加1,所以是10000111。
-----------

LZ很不厚道耶....你的题目明明问的是"结果是什么?",又不要结果....
你要的是什么程序?

输出的程序吗?