binary - 从有符号数中提取位域

标签 binary bit-manipulation math signed

我有以 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/

相关文章:

Java double 和 int 值之间的按位 AND 运算

math - 非唯一集的帕斯卡定理?

php - 累积数组

c++ - 保持数字不小于零的数学运算

c - 编辑和更改二进制文件中的部分

c - 如何以动态排列的结构加载二进制文件的信息?

c - 计算基数 4 中匹配数字数量的最快方法是什么?

python - 将服装二进制数据文件读入 pandas 数据帧

java - 如何从 jar 文件中获取函数签名?

java - Java中的位运算类