小编Sil*_*fin的帖子

加倍和除以浮点值

我有一个函数,我相信将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)

c c++ floating-point bits

6
推荐指数
1
解决办法
255
查看次数

仅使用按位运算符复制 for 循环的功能

我正在尝试仅使用按位和某些运算符(包括 ! ~ & ^ | + << >>

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 循环的情况下实现这样的输出。

c c++ for-loop bit-manipulation bitwise-operators

0
推荐指数
1
解决办法
2462
查看次数