Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 为什么这种幂函数会起作用? res=1; 对于(i=1;i_C_Loops - Fatal编程技术网

C 为什么这种幂函数会起作用? res=1; 对于(i=1;i

C 为什么这种幂函数会起作用? res=1; 对于(i=1;i,c,loops,C,Loops,让我们假设你有一个无符号数的二进制表示。你如何找到十进制表示 让我们举一个简单的四位示例: res = 1; for ( i = 1; i <= n; i <<= 1 ) // n = exponent { if ( n & i ) res *= a; // a = base a *= a; } 现在,如果每一位的基数不是固定为2,而是前一位的平方,然后乘以每一位的贡献,而不是相加,那么会发生什么 N = | 0 |

让我们假设你有一个无符号数的二进制表示。你如何找到十进制表示

让我们举一个简单的四位示例:

res = 1;
for ( i = 1; i <= n; i <<= 1 ) // n = exponent
{
    if ( n & i )
        res *= a; // a = base
    a *= a;
}
现在,如果每一位的基数不是固定为2,而是前一位的平方,然后乘以每一位的贡献,而不是相加,那么会发生什么

N = |   0     |    1    |    0    |    1    |
    -----------------------------------------
    | 2^3 = 8 | 2^2 = 4 | 2^1 = 2 | 2^0 = 1 |
    -----------------------------------------
    |    0    |     4   |    0    |     1   |  N = 4 + 1 = 5

如您所见,代码计算a^N

什么是
a
?请尝试更好地解释您的问题您是否尝试在循环中添加
printf
,以查看变量的值?谢谢,我收到了
N = |   0   |  1  |  0  |  1   |
    ----------------------------
    |   a^8 | a^4 | a^2 |  a^1 |
    ----------------------------
    |   0   | a^4 |  0  |  a^1 |  N = a^4 * a^1 = a^(4+1) = a^5