无符号和有符号二进制数
诸如整数之类的变量可以用两种方式表示,即有符号和无符号。有符号数使用符号标志或可以区分负值和正值。而无符号数仅存储正数,而不存储负数。
数字表示技术,例如:二进制、八进制、十进制和十六进制数字表示技术可以以有符号和无符号的方式表示数字。二进制数系统是一种数字表示技术。它在数字系统中最流行和使用。二进制系统用于表示二进制量,这些量可以通过任何只有两种工作状态或可能条件的设备来表示。例如,开关只有两种状态:开或关。
在二进制系统中,只有两个符号或可能的数字值,即 0 和 1。由任何只有 2 个工作状态或可能条件的设备表示。二进制数通过添加 0b 前缀或 2 后缀来指示。
二进制数的表示
二进制数可以以有符号和无符号的方式表示。无符号二进制数没有符号位,而有符号二进制数使用符号位以及可以区分正数和负数。有符号二进制数是有符号变量的一种特定数据类型。
1. 无符号数
无符号数没有任何符号,它们只能包含数字的幅值。因此,无符号二进制数的表示仅为正数。例如,正十进制数的表示默认情况下为正数。我们总是假设每个数字前面都有一个正号符号。
无符号二进制数的表示
由于此无符号二进制数中没有符号位,因此 N 位二进制数仅表示其幅值。零 (0) 也是无符号数。此表示形式只有一个零 (0),它始终为正数。无符号数表示中的每个数字都只有一个唯一的二进制等效形式,因此这是一种明确的表示技术。无符号二进制数的范围是从 0 到 (2n-1)。
示例-1:用无符号二进制数表示十进制数 92。
只需将其转换为二进制数,它仅包含给定数字的幅值。
= (92)10
= (1x26+0x25+1x24+1x23+1x22+0x21+0x20)10
= (1011100)2
这是十进制数 92 的 7 位二进制幅值。
示例-2:查找 5 位无符号二进制数的范围。另外,查找此范围内的最小值和最大值。
由于无符号二进制数的范围是从 0 到 (2n-1)。因此,5 位无符号二进制数的范围是从 0 到 (25-1),即从最小值 0(即 00000)到最大值 31(即 11111)。
2. 有符号数
有符号数包含符号标志,此表示法区分正数和负数。此技术包含数字的符号位和幅值。例如,在负十进制数的表示中,我们需要在给定的十进制数前面加上负号。
有符号二进制数的表示
有符号二进制数有三种表示形式。由于存在额外的符号位,因此二进制数零有两种表示形式,要么是正数 (0),要么是负数 (1),因此表示不明确。但是,由于没有数字零 (0) 的双重表示,因此 2 的补码表示是明确的表示。它们是:符号幅值形式、1 的补码形式和 2 的补码形式,如下所述。
2.(a) 符号幅值形式
对于 n 位二进制数,1 位保留用于符号符号。如果符号位的值为 0,则给定数字将为正数,否则如果符号位的值为 1,则给定数字将为负数。其余 (n-1) 位表示数字的幅值。由于数字零 (0) 的幅值始终为 0,因此数字零 (0) 可以有两种表示形式,正数 (+0) 和负数 (-0),这取决于符号位的值。因此,由于数字零 (0) 的两种表示形式,这些表示通常是不明确的。通常,符号位是表示的最重要位 (MSB)。符号幅值形式的范围是从 (2(n-1)-1) 到 (2(n-1)-1)。
例如,6 位符号幅值形式二进制数的范围是从 (25-1) 到 (25-1),即从最小值 -31(即 1 11111)到最大值 +31(即 0 11111)。零 (0) 有两种表示形式,-0(即 1 00000)和 +0(即 0 00000)。
2.(b) 1 的补码形式
由于数字的 1 的补码是通过反转给定数字的每一位获得的。因此,我们以二进制形式表示正数,以 1 的补码形式表示负数。有一个额外的位用于符号表示。如果符号位的值为 0,则数字为正数,您可以直接以简单的二进制形式表示它,但如果符号位的值为 1,则数字为负数,您必须取给定二进制数的 1 的补码。您可以通过正数的 1 的补码获得负数,并通过使用负数的 1 的补码获得正数。因此,在此表示中,零 (0) 可以有两种表示形式,这就是为什么 1 的补码形式也是不明确的形式。1 的补码形式的范围是从 (2(n-1)-1) 到 (2(n-1)-1)。
例如,6 位 1 的补码形式二进制数的范围是从 (25-1) 到 (25-1),即从最小值 -31(即 1 00000)到最大值 +31(即 0 11111)。零 (0) 有两种表示形式,-0(即 1 11111)和 +0(即 0 00000)。
2.(c) 2 的补码形式
由于数字的 2 的补码是通过反转给定数字的每一位并加上 1 到最低有效位 (LSB) 获得的。因此,我们以二进制形式表示正数,以 2 的补码形式表示负数。有一个额外的位用于符号表示。如果符号位的值为 0,则数字为正数,您可以直接以简单的二进制形式表示它,但如果符号位的值为 1,则数字为负数,您必须取给定二进制数的 2 的补码。您可以通过正数的 2 的补码获得负数,并通过直接使用简单的二进制表示获得正数。如果最高有效位 (MSB) 的值为 1,则取 2 的补码,否则不取。因此,在此表示中,零 (0) 只有一个(唯一的)表示形式,它始终为正数。2 的补码形式的范围是从 (2(n-1)) 到 (2(n-1)-1)。
例如,6 位 2 的补码形式二进制数的范围是从 (25) 到 (25-1),即从最小值 -32(即 1 00000)到最大值 +31(即 0 11111)。零 (0) 有两种表示形式,-0(即 1 11111)和 +0(即 0 00000)。