我有一个函数,我相信将int转换为浮点值,拆分为值的符号指数和分数组成部分.使用IEEE 754表示浮点值.
unsigned test(unsigned x) {
// split the given bits of sign exponent and fraction, combine to return
unsigned int sign = (x & 0x80000000) >> 31;
unsigned int expo = (x & 0x7F800000) >> 23;
unsigned int frac = (x & 0x007fffff);
return (sign << 31) | (expo << 23) | frac;
}
Run Code Online (Sandbox Code Playgroud)
但我不确定如何从这个浮点表示计算减半或加倍的值.
unsigned doubled(unsigned x) {
// get float
// float = unsigned int to float
// doubleFloat = 2*f
// if float is not a …Run Code Online (Sandbox Code Playgroud) 我正在尝试仅使用按位和某些运算符(包括 ! ~ & ^ | + << >>
int loop(int x) {
for (int i = 1; i < 32; i += 2)
if ((x & (1 << i)) == 0)
return 0;
return 1;
}
Run Code Online (Sandbox Code Playgroud)
但是,我不确定如何仅使用这些运算符来复制循环的累积性质。我明白移位<< >>会让我乘以除以。然而,操作使用! ~ & ^ ~已被证明更加困难。有小费吗?
http://www.tutorialspoint.com/cprogramming/c_operators.htm
编辑:我了解如何添加位,但不知道如何在不先调用 while 或 for 循环的情况下实现这样的输出。