有符号和无符号之间的区别,什么是负字节



我需要解决下面的问题,但我不理解解决方案所需的概念。

让我们考虑下面的双字字符串:B234*A68C*h,*52B4*78C8h,*1AB3*C470h,F9DC*198B6**h。要求:

1) 在屏幕上打印每个双字中具有最小值的单词等级(考虑它们无符号)

答案是"2112"(粗体字具有最小值)

2) 在屏幕上打印这些单词中具有最大值的字节的总和(考虑到它们签名)

3) 在屏幕上打印双字的严格否定*低位字*

如何区分有符号和无符号?否定的下位词到底是什么意思?这个值是否不符合区间[0255]?

是16位。双字是32位,可以认为是由两个单独的字组成。

在双字中,低位字是低位字(位于低位内存地址的字,因为x86是小端序)。高位字是高位字(位于较高内存地址的字)。

寄存器不区分有符号无符号

  • 无符号指令,将寄存器/内存中的值视为无符号值。示例:ja(如果在上面,则跳转)。

  • 有符号指令,将寄存器/内存中的值视为有符号值。示例:jg(如果大于则跳转)。

  • 不可知论指令,其行为方式与值被解释为有符号还是无符号无关。示例:add(有符号加法和无符号加法是相同的,因为这是二补算术的一个属性)。

x86指令的任何引用页/文档都应该指定指令是签名的还是未签名的。如果没有指定,则说明该指令是不可知的。

希望这有助于澄清一些事情!

相关内容

  • 没有找到相关文章

最新更新