我正在学习高级汇编语言,并且正在研究有符号和无符号整数的概念。看起来很简单,但是签名扩展让我很困惑。
取字节10011010,我将采用十进制的154。实际上,使用二进制计算器时,如果选择了多于单词,则将其显示为十进制数154.
但是,如果我选择单位为一个字节,并输入10011010,则突然将其视为十进制的-102。每当我从一个字节开始增加它然后它被符号扩展并且将始终是十进制的-102。
如果我使用高于一个字节的任何值,那么它仍然是十进制的154.
有人可以解释这个看似不一的地方吗?
答案 0 :(得分:0)
当您选择单位作为字节时,10011010
的MSB被视为有符号位,这使得这一个字节符号整数等效解释为-102(2的补码)。
对于大于8位的整数,比如16位,数字将是:0000000010011010
,它在MSB中没有1,因此它被视为正整数,其整数表示为十进制154。当您将8位字节转换为更高的类型时,符号扩展也将在更大的长度存储中保留-ve解释。