0到128之间的差异

Exp*_*ice -3 c c++ computer-architecture

一个signed integer(使用8位)---范围==> -128 to 127.

如果我们考虑2的补语表示:

10000000 =128/(-0) [ Since its 2's Complement is 10000000 ]
Run Code Online (Sandbox Code Playgroud)

所以在某种程度上它是negative零.

现在对于一个signed整数,128是1000 00002和2的补码也是1000 0000,所以我们不能0使用这种表示形式的[在负面形式] 的副本吗?或者我错过了什么?

抱歉打字错误.是的范围是 -128 to 127.

但是8位可以在内存中表示这个数字10000000.如果这个数字CAN存储在内存中那么它的价值是多少?

MGZ*_*ero 8

不,有符号整数的值为10000000不是128,它是-128.最高有效位用作符号位.


Ben*_*ley 6

你错过了2的comp中8位数的范围是-128到127,而不是-127到128的事实.你也误解了2的comp是如何工作的,你将它视为符号和幅度.

2的comp循环达到它的最大值时,你不能简单地通过查看符号位读取,然后将剩余的位看作正常值,然后将两者合并.这将是标志和规模.例如

  • 10000001 - 这是-127,而不是 -1
  • 10000010 - 这是-126,而不是 -2
  • 10000011 - 这是-125,而不是 -3

"但是8位可以在内存10000000中表示这个数字.如果这个数字可以存储在内存中那么它的价值是多少?"

它的值是-128.