我尝试使用以下方法解决: - 将绝对值转换为二进制。- 做 2 的补码。但我遇到的问题是我应该使用多少位来表示 513 的绝对值?谢谢。
问问题
98 次
1 回答
0
http://en.wikipedia.org/wiki/2%27s_complement
来自维基百科,N 位的二进制数可以表示介于 -2^(N-1) 到 +2^(N - 1) - 1 之间
其中 2^X 是 X 的 2 次方。
询问表示 513 需要多少位是没有多大意义的。您可以用一个位来表示它,其中 1 表示 513,0 表示其他的东西。你需要问我需要多少位来表示一个数字范围。
正如我上面提到的,使用 2 的补码,您最多可以表示 (2^(N-1)-1) 个正数和 2^(N-1) 个负数。所以假设你想表示 [-513..513] 你需要 11 位。
那是因为 2^(11-1) 等于 1024。这样你就可以用 2 的补码表示从 -1024 到 1023 的数字。选择 N = 10 会给你 -512 到 511 之间的数字,这还不够。
我希望这有帮助。
于 2013-10-07T20:50:04.643 回答