Binary 解释有符号和无符号数字

Binary 解释有符号和无符号数字,binary,twos-complement,Binary,Twos Complement,老师告诉我们二进制数,例如10000001,有两种含义。一个是表示-127(有符号),它从-127到127 另一个是无符号数,从0到256 如果我有一个二进制数字,例如1000 0001,计算器只显示有符号的数字(-127)。我怎么知道这个二进制数代表的无符号数是什么?有符号数和无符号数具有完全相同的位 在计算器中,可以显示为十六进制(0xff)。这取决于您是否要解释十六进制数字和“有符号”或“无符号” 在x86汇编程序中,您可以检查CPU状态标志中的“符号位” 查看本教程: 有符号和无符号数字

老师告诉我们二进制数,例如10000001,有两种含义。一个是表示-127(有符号),它从-127到127 另一个是无符号数,从0到256


如果我有一个二进制数字,例如1000 0001,计算器只显示有符号的数字(-127)。我怎么知道这个二进制数代表的无符号数是什么?

有符号数和无符号数具有完全相同的位

在计算器中,可以显示为十六进制(0xff)。这取决于您是否要解释十六进制数字和“有符号”或“无符号”

在x86汇编程序中,您可以检查CPU状态标志中的“符号位”

查看本教程:


有符号和无符号数字的位完全相同

在计算器中,可以显示为十六进制(0xff)。这取决于您是否要解释十六进制数字和“有符号”或“无符号”

在x86汇编程序中,您可以检查CPU状态标志中的“符号位”

查看本教程:


无符号数字是最容易从二进制解释的;只需将位所代表的所有值相加(
2^7+2^0
对于数字
1000 0001
=129)

签署的解释基本相同,只是有一个额外的步骤: 如果前导位为
1
,则将所有位反转(在本例中为
0111110
),并将
1
添加到结果中,以获得负数的(绝对)值(在本例中为
0111111
=127)


要测试您是否正确,请再次执行相同的操作,并以原始编号结束

无符号数字最容易从二进制解释;只需将位所代表的所有值相加(
2^7+2^0
对于数字
1000 0001
=129)

签署的解释基本相同,只是有一个额外的步骤: 如果前导位为
1
,则将所有位反转(在本例中为
0111110
),并将
1
添加到结果中,以获得负数的(绝对)值(在本例中为
0111111
=127)


要测试您是否正确,请再次执行相同的操作,并以原始编号结束

我的问题是,如果我有一个特定的二进制数,例如1000 0001,我如何知道这个数的两个中间值?1)请阅读我引用的链接。2) 请理解,在“二进制算术”方面,并没有区别。3) 在有符号和无符号之间的精神转换方面:a)无符号:只需添加位(0x81==129);b) 有符号:如果设置了高位,则从128中减去剩余的位(此处为128-1->-127)。我的问题是,如果我有一个特定的二进制数,例如1000 0001,我如何知道该数字的两个选项?1)请阅读我引用的链接。2) 请理解,在“二进制算术”方面,并没有区别。3) 在有符号和无符号之间的精神转换方面:a)无符号:只需添加位(0x81==129);b) 有符号:如果设置了高位,则从128中减去剩余的位(此处为128-1->-127)。或者更简单地说,对于2的补码,符号位的位置值为
-128
,而不是对于无符号的补码,符号位的位置值为
+128
。(假设为8位数字)。您正在描述如何进行2的补码求反以获得无符号数。不完全确定您所指的是什么?在第一段中,我描述了如何读取(无符号)二进制数,在第二段中,我描述了如何使用2的补码获得(负)有符号数的绝对值-这就是解码二进制数的方式,不是吗?当然,我可以(也可能应该)在前面加一个(-)来明确它,但我确实说了负数的绝对值,所以我认为它是隐含的。当然,你可以按照这个规则得到2的补码编码数的符号和大小。或者您可以将其视为位值为
2^n
的位,但顶部位的位值为
-(2^n)
。我发现这更简单:你可以直接思考2的补码编码的意义,而不是仅仅通过两步过程获取绝对值。i、 e.可以立即看到
1000 0000
的值为
-128
,无需仔细考虑
0x7f+1
或更简单地说,符号位的位置值是
-128
表示2的补码,而不是
+128
表示无符号。(假设为8位数字)。您正在描述如何进行2的补码求反以获得无符号数。不完全确定您所指的是什么?在第一段中,我描述了如何读取(无符号)二进制数,在第二段中,我描述了如何使用2的补码获得(负)有符号数的绝对值-这就是解码二进制数的方式,不是吗?当然,我可以(也可能应该)在前面加一个(-)来明确它,但我确实说了负数的绝对值,所以我认为它是隐含的。当然,你可以按照这个规则得到2的补码编码数的符号和大小。或者您可以将其视为位值为
2^n
的位,但顶部位的位值为
-(2^n)
。我发现这更简单:你可以直接思考2的补码编码的意义,而不是仅仅通过两步过程获取绝对值。i、 e.
1000 0000
的值为
-128
,无需仔细考虑
0x7f+1