这个算法没看懂~该怎么处理
这个算法没看懂~对一个16位的二进制取出它的奇数位(即从左边起第1、3、5……、15位)。算法的部分没看懂,帮忙解释
这个算法没看懂~
对一个16位的二进制取出它的奇数位(即从左边起第1、3、5……、15位)。
算法的部分没看懂,帮忙解释下~
C/C++ codefor(i = 1; i <= 15; i += 2){ q = 1; for(j = 1; j <= (16 - i - 1) / 2; j++) q = q * 2; a = value >> (16 - i); a = a << 15; a = a >> 15; z = z + a * q;}
[解决办法] ((value >> (16 - i))<<15)>>15
value >> (16 - i) 要取的奇数位移动到数的最后一位 去掉此位之后的数
再左移15位 将要取的奇数位 移动到数的第一位 就是去掉此位之前的数
再右移15位 就是你要的奇数位了
z = z + a * q;
将奇数位算上他的权值相加 就是结果了吧……
[解决办法]一个一个的试数,当I=1时,q的值为十进制128,二进制10000000,当I=3时,q的值为十进制64,二进制1000000,以此类推,看看就明白了!