Assembly 有符号与无符号解释
我只是想了解一下有符号和无符号的解释。如果我说,如果一个数字是无符号整数,那么它的值通常是通过将二进制转换为十进制来计算的。但是,当涉及到有符号整数时,首先记录符号位(msb),然后使用2的补码计算二进制值,对吗;计算的值是带有符号的实际值Assembly 有符号与无符号解释,assembly,Assembly,我只是想了解一下有符号和无符号的解释。如果我说,如果一个数字是无符号整数,那么它的值通常是通过将二进制转换为十进制来计算的。但是,当涉及到有符号整数时,首先记录符号位(msb),然后使用2的补码计算二进制值,对吗;计算的值是带有符号的实际值 我是对的还是遗漏了什么 是的,你是对的。当将以2的补码形式表示的有符号整数转换为十进制数时,您可以这样做。2的补充是英特尔处理器如何存储和计算有符号整数 注意:但这个答案并不是关于英特尔机器如何表示有符号整数。这是一般性的 用于转换为十进制的技术实际上取决于
我是对的还是遗漏了什么 是的,你是对的。当将以2的补码形式表示的有符号整数转换为十进制数时,您可以这样做。2的补充是英特尔处理器如何存储和计算有符号整数 注意:但这个答案并不是关于英特尔机器如何表示有符号整数。这是一般性的 用于转换为十进制的技术实际上取决于硬件使用的表示形式 硬件设计师可以选择将签名号码存储为:
11111111
表示-0
,和00000000
a+0
)当然,2的补码是大多数硬件(今天几乎所有的通用CPU)存储签名数字的方式。这使添加成为小菜一碟。是的,你说得对。当将以2的补码形式表示的有符号整数转换为十进制数时,您可以这样做。2的补充是英特尔处理器如何存储和计算有符号整数 注意:但这个答案并不是关于英特尔机器如何表示有符号整数。这是一般性的 用于转换为十进制的技术实际上取决于硬件使用的表示形式 硬件设计师可以选择将签名号码存储为:
11111111
表示-0
,和00000000
a+0
)当然,2的补码是大多数硬件(今天几乎所有的通用CPU)存储签名数字的方式。这使得加法变得轻而易举。您所描述的是将有符号二进制整数转换为具有十进制数字的人类可读字符串的最典型方法
然而,这不是唯一的办法。您可以先将2的补码负3位值111转换为“7”,然后从中减去“8”并得到“-1”。您所描述的是将有符号二进制整数转换为具有十进制数字的人类可读字符串的最典型方法
然而,这不是唯一的办法。您可以先将2的补码负3位值111转换为“7”,然后从中减去“8”并得出“-1”。我所问的带符号大小写是否仅适用于带符号的负数?如果转换为“带可选符号前缀的十进制数”,则是这样。符号单独查看,绝对值(在本上下文中,int.minvalue确实存在,因为它是无符号的)转换为十进制。我问的带符号的大小写是否只适用于带符号的负数?在转换为“带可选符号前缀的十进制数”的情况下,是的,它是这样工作的。符号是分开看的,绝对值(在本上下文中,int.minvalue确实存在,因为它是无符号的)被转换为十进制。不过,你不必用蹩脚的方法进行2的补码乘法-下半部分只是一个常规乘法,上半部分有一些技巧(我忘了这些技巧是什么了。实际上,你多久需要在课外使用它们一次。)无论如何,有比符号大小更好的方法来存储为乘法优化的整数(例如RNS)@harold-对。我的意图是给出一个简单的解释,同时坚持认为有不同的表示法可用。将2的补码很好地相乘的一种方法是“修改的Baugh Wooley乘数”。我最近构建了其中一种,作为LEON3单周期乘数的替代品:)你不必用蹩脚的方法来做2的补码乘法——下半部只是一个常规乘法,上半部有一些技巧(我忘了这些技巧是什么了,确切地说。你在课外需要它们的频率有多高……)。无论如何,有比符号大小更好的方法来存储为乘法优化的整数(例如RNS)@harold-Right。我的意图是简单解释,同时坚持认为有不同的表述。将2的补码很好地相乘的一种方法是“改进的Baugh-Wooley乘法器”。我最近建造了其中一个,作为LEON3单周期倍增器的替代品:)