18

什么是 32 位有符号整数的最小值,恰好是在 [本网站] 上创建帐户的安全“挑战”问题(编辑:链接现在是恶意软件)(不要判断我只是好奇和无聊)。

我以为他们在谈论一个典型的 32 位 int,它可以存储2,147,483,647. 但是当我尝试时-2147483647,它说我的问题错了。我尝试了几种变体,例如-2,147,483,647但没有任何效果...

我误解了这个问题还是网站有问题?

PS我也按照建议尝试了-2,147,483,648

这是一张图片 在此处输入图像描述

4

2 回答 2

38

最常用的整数大小是 32 位。最后一位用于区分正数和负数。如果最后一位未设置,则该数字为正数。因此,最大正数为0x7FFFFFFF= (1<<31)-1= 2147483647(最后一位未设置)。

对于负数,二进制补码表示法被广泛使用。您可以通过反转其所有位并加 1 来识别正数的对应物。因此,最大整数的对应物是0x80000001,但它不是最小数。

二进制补码表示法中的最小数字是0x80000000= -2147483648。关于这个数字的有趣事实是它等于它自己的补码,即反转所有位的结果0x7FFFFFFF并加 1 产生0x80000000,这等于原始数字。

更多关于wikipedia中的补码表示法。

于 2015-07-28T23:09:27.773 回答
8

有符号的 32 位整数可以下降到-2,147,483,648

于 2013-09-29T22:58:28.593 回答