关于有符号与无符号整数的快速入门知识

272 阅读3分钟

如果你使用高级编程语言,你可能遇到过有符号和无符号整数。下面是对它们的简单介绍。

以比特形式存储的整数

在引擎下,整数以比特(二进制数字)形式存储,这意味着它们由01 。如果你有一个4位整数,有四个槽用于0和1,如果你有一个16位整数,有16个槽用于0和1。

下面是几个有效的4位整数。

  • 0000
  • 0101
  • 1000
  • 1110

每一个0和1的排列组合都会代表一个不同的整数。

有符号性

那么,这些位的组合代表什么?这取决于整数是有符号还是无符号有符号的整数意味着该数字可以是负数、零数或正数,无符号的整数意味着该数字只能是零或正。如果你的整数可以有一个负号,那么它就是有符号的!

让我们来看看这对我们的4位案例来说是如何运作的。

4位整数,有符号与无符号

编码无符号有符号的
000000
000111
001022
001133
010044
010155
011066
011177
10008-8
10019-7
101010-6
101111-5
110012-4
110113-3
111014-2
111115-1

请注意,我们的无符号4位整数的范围是0到15,而我们的有符号4位整数的范围是-8到7。 在这个例子中,有符号整数的第一位被称为符号位,因为它决定了相关整数是正数还是负数--如果第一位是1 ,那么这个整数就是负数。

事实上,在决定使用有符号整数还是无符号整数时,一个考虑因素是你是否需要容纳负数--只有有符号的整数才能做到这一点!当然,你可以看到,通过允许一些组合来代表负数,我们的整数的最大可能值较低。一个权衡的结果!

**注意:**上表中无符号整数的表示方法被称为二进制补码,在大多数现代计算设备上使用。你可以在维基百科上了解更多关于其他有符号数字的表示方法

一些关于整数范围的快速数学运算

正如我之前提到的,4位整数有不同的可能范围,这取决于该整数是否被签名。如果有符号,范围是-8到7;如果无符号,范围是0到15。

这是有公式可循的!其中n 是比特数,以下情况成立。

有符号的整数可以在-(2n-1)和2n-1 - 1之间。

无符号整数可以在0和2n - 1之间。

用4来表示n,我们可以看到它在我们手工操作的情况下是成立的。

有符号的

最小值:-(24-1)=-(23)=-8

最大:24 - 1- 1 = 8 - 1 = 7

无符号

最小值。0

最大:24-1=16-1=15

总结

我希望你今天学到了一些关于整数的知识!如果你觉得有趣,我鼓励你继续挖掘你所听到的基础性话题。