【发布时间】:2012-11-22 16:54:48
【问题描述】:
有一个二进制字符串10001110,我知道它使用的是 2 的补码。我知道它将是 8 位。
它以unsigned int 的形式提供给我,等于 142。
然后我需要将其转换回10001110
然后将所有位反转并加一,结果等于01110010
然后将其转换为等于 -114 的 signed int。
我该怎么做?我对 C 语言比较陌生,并且花了很长时间试图弄明白!
基本上我想编写一个函数,它接受unsigned int 142 并返回signed int -114
【问题讨论】:
-
它总是有 8 位?还是什么?
-
是的,在这种情况下,我知道它是 8 位。不过,我希望能够将其作为参数传递给函数。
-
01110010 不只是 114(不是 -114)吗?
-
1) 转换为
unsigned char,2) 使用按位“非”,3) 转换为int。 -
@KerrekSB 你忘了“加一个” ;-)
标签: c binary int bit-manipulation twos-complement