Binary 负数如何用32位有符号整数表示?
负数如何用32位有符号整数表示? 它是二的补码还是一的补码?或者左边的最后一点像一面旗帜?Binary 负数如何用32位有符号整数表示?,binary,numbers,Binary,Numbers,负数如何用32位有符号整数表示? 它是二的补码还是一的补码?或者左边的最后一点像一面旗帜? 例如:(-10)通常它是两个补码。现在大多数计算机使用有符号整数,但它可能因硬件体系结构、编程语言或其他特定于平台的问题而有所不同 对于2的补码表示,最高有效(“最左边”)位称为符号位,它将设置为负整数,清除为非负整数。然而,它不仅仅是一面“旗帜”。有关更多信息,请参阅 0xFFFFFFFF = -1 0xFFFFFFFE = -2 0xFFFFFFFD = -3 ... &因此,最高有效位(左侧最后
例如:(-10)通常它是两个补码。现在大多数计算机使用有符号整数,但它可能因硬件体系结构、编程语言或其他特定于平台的问题而有所不同 对于2的补码表示,最高有效(“最左边”)位称为符号位,它将设置为负整数,清除为非负整数。然而,它不仅仅是一面“旗帜”。有关更多信息,请参阅
0xFFFFFFFF = -1
0xFFFFFFFE = -2
0xFFFFFFFD = -3
...
&因此,最高有效位(左侧最后一位)设置为负数。来自C99标准:
对于有符号整数类型,则
对象表示应为
分为三组:值位,
填充位和符号位。那里
不需要任何填充位;那里
应正好是一个符号位。每个
作为值位的位应具有
与中的相同位相同的值
对象的对象表示
相应的无符号类型(如果有
是符号类型中的M值位
在无符号类型中为N,然后为M=
N) 。如果符号位为零,则应
不影响结果值。如果
符号位为1,值应为
通过以下方式之一进行修改:
-带符号的对应值
位0为负数(符号和幅度)
-符号位的值为-(2N)
(二补)
-符号位的值为-(2N-1)
(一人之补)
以下哪项适用
是否定义了实现,即
符号位为1且全部为的值
值位零(对于前两个),
或带符号位和所有值位1
(作为补语)是一个陷阱
表示或正常值。在里面
符号和大小的情况
一的补语,如果这个
表示是一个正常值,它是
称为负零
我认为答案是
0110
,前面有1个重复28次,因此看起来像:
1111111111111111111111111111111111111111010代码>
步骤:
10的位表示为:
0000 1010代码>
所有位的0->1
和1->0
:
11111111111111111111111111111111111111110101代码>
将1添加到最后一位,并传播到前面的位,完成
1111111111111111111111111111111111111111010代码>
===
您可以将其与10相加进行验证,所有位都将得到0。如上所述,它是以2为基础的,并遵循2的补码。仅供参考:否定
->添加一个
以8位的5
为例,引用自
有一个技巧可以将一个数字从正数转换为负数或相反:
忽略它们的有符号位(最左边的位)添加它们将得到2^N
(其中N是表示数字的位数)
如上面8位表示中的示例所示,5(0000 0101)
和-5(1111 1011)
之和将为您提供1 0000 0000
,即(2^8) 在什么情况下?不同的系统/平台会做不同的事情。你是说“左边的第一位”?你是说“左边的第一位”?那么“左边的第一位”或“右边的最后一位”呢那么前面的位将是1表示负数,0表示正数?那么0呢?0表示所有的位都为零。解释得很清楚。请您使用这种解释方法来解释浮点数是如何存储的。
to convert 5 to -5: 0000 0101 - flip -> 1111 1010 - add one -> 1111 1011