我有以 32 位整数存储的有符号数(2 补码),我想从中提取 16 位字段。如果我从 32 位有符号数中提取低 16 位,只要原始(32 位)数字适合 16 位,结果就会正确吗?
对于正数来说,这几乎是正确的,对于负数来说似乎也是如此。但这能被证明吗?
提前致谢
最佳答案
是的,在二进制补码中,符号位“一直”向左延伸。当您将有符号的 Short 转换为有符号的 int 时,数字为 "sign extended"并且具有相同的值。
示例:Nibble
(-2) = 1110 => 字节(-2) = 1111_1110
显然,反之亦然,如果您捕获至少一个符号位,则该数字的值保持不变。
关于binary - 从有符号数中提取位域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/258131/