【发布时间】:2013-02-06 04:00:12
【问题描述】:
这是一道作业题。
我需要将一个无符号的 8 位数字转换为一个有符号的 32 位数字。
例如我有这个无符号的 8 位数字:1111 1010
所以在 32 位签名中应该是 1111 1111 1111 1111 1111 1111 1111 1010
我该怎么做?我知道>> 只有在它是有符号整数时才用 1 填充,所以我可以在右移之前将其转换为有符号整数。
唯一的问题是我对我的问题有限制,这表明我需要创建一个“仅使用左移和右移以及一个减法”的函数。
【问题讨论】:
-
将其转换为已签名。 (在有人为此叫我之前:是的,我知道这是 IB,但请给我看一个它不起作用的单一环境。)
-
我可以,但正如我在上一段中所说,我不允许这样做
-
您可能会在Sign extending an
intin C 的答案中找到您需要的内容,它处理整数中任意位置的任意长度字段,但您在末尾有一个很好的 8 位字段整数。 -
@adamk33n3r 那么你可能应该澄清你不允许投。因为我没有捡到。
-
@Mysticial 对不起,如果你没看到我说,但我说它只能使用左右移位和一个减法
标签: c bit-manipulation