C语言位运算问题

2024-12-02 04:45:25
推荐回答(3个)
回答(1):

person[j]= (i>>(3*j))&7

假设此时i=24、j=1,那么i>>(3*j)就相当于24>>3,意思就是把24这个数换成二进制后也就是00011000的各位向右移动3位,变成00000011即3。然后再算3&7,意思是把3和7按位进行与运算,相当于00000011&00000111=00000011=3,所以最总结果就是person[1]=3。以此类推。

回答(2):

这个程序有问题。
对于2097152个i值,有2097152组person[],这样最后一组person会把以前的都覆盖掉,其实计算的是i=2097151时的一组person值,所以程序的双循环有些浪费。

回答(3):

你哪里学的 我也想学呢