当前位置: 首页 > 面试题库 >

为什么负整数要比正整数多?

陆甫
2023-03-14
问题内容

任何int数据类型的上限(不包括tinyint)总是比下限的绝对值小1。

例如,an的上限为int2,147,483,647,ABS(下限)= 2,147,483,648。

是否有理由总是总是比负整数多一个负整数?

编辑:更改,因为问题与数据库不直接相关


问题答案:

您提供的类型是有符号整数。让我们来看一个字节(8位)的示例。使用1字节,您可以2^8使用组合来存储256个可能的数字。

现在,您要具有相同数量的正数和负数(每个组应有128个)。

关键是0没有+0-0。只有一个0

因此,您最终获得了范围-128..-1..0..1..127

相同的逻辑适用于16/32/64-bit

编辑:

为什么范围是-128 to 127

这取决于您 represent signed integer

  • 签名幅度表示
  • 一个人的补充
  • 补码


 类似资料:
  • 在这个代码中,-20应该是最小值,因为它是负数,并且离零最远,正确吗?但当我运行MinAlgoritm时,会打印出整数5。我有一个最大版本的这个可以很好地工作,但这个不行。这怎么可能?我能做些什么改进吗?

  • 我的目标是了解两者的互补性。 有符号整数中的等于。但是,如果您使用十六进制的或十进制的按位与它,它将等于。 在我看来,这不应该发生,因为顶部字节与结果字节相同 我的预期结果是该值不应该改变,它等于< code>-121。 我的实际结果是值发生变化。 我的猜测是,是一个。因此,顶部字节的有符号位和下部字节的无符号位将导致无符号位。但是......那不可能是对的。

  • 问题内容: 我到处都读到过,当您在Java中定义介于-128到127之间的Integer时,它不会创建新对象,而是返回已经创建的对象。 除了让新手程序员比较Integer对象以查看它们是否具有相同的数字外,我看不到这样做的任何意义,但是我认为这很糟糕,因为确保他们认为可以将任何Integer对象与进行比较,并且还在教学在任何编程语言中都不好的做法:将两个“不同”对象的内容与进行比较。 这样做有其他

  • 除了让新手程序员将整数对象与进行比较,以确定它们是否是相同的数字之外,我认为这样做没有什么意义,但我认为这是不好的,因为他们肯定认为可以将任何整数与进行比较,而且在任何编程语言中都教给了一种不好的做法:用比较两个“不同”对象的内容。 为什么这样做还有其他原因吗?或者这只是在设计语言时的一个错误决定(在我看来),就像JavaScript中的可选分号一样? 编辑:我在这里看到他们解释了行为:为什么整数

  • 问题内容: -1 / 5整数除法应该返回什么?我对此行为完全感到困惑。我认为数学上应该为0,但是python和ruby返回-1。 为什么不同的语言在这里表现不同?请有人解释。谢谢。 问题答案: 简短的答案: 语言设计者可以选择在进行整数除法时,其语言是四舍五入为零,负无穷大还是正无穷大。不同的语言做出了不同的选择。 长答案: Python和Ruby的语言作者都认为向负无穷大舍入比向零四舍五入更有意

  • 我有一项任务,阐述C代码(在x86上运行)的一些看似奇怪的行为。我可以很容易地完成其他一切,但这件事真的让我困惑。 代码段1输出