数组循环移位解决办法
数组循环移位01011001 10101001 10011001 011000010x590xA90x990x61比如数组有上面四个元素、住右移一位变
数组循环移位
01011001 10101001 10011001 01100001
0x59 0xA9 0x99 0x61
比如数组有上面四个元素、
住右移一位变成、
10101100 11010100 11001100 10110000
0xAC 0xD4 0xCC 0xB0
比如我想右移16位、17位怎么操作?、
说个大概的方法吧、
怎么写代码效率最优、
不考虑代码大小、速度要最优、
[解决办法]
[解决办法]比如你有n个Byte,循环右移M位,那么你实际上可以认为是把最后M/8个字节拿到前面去,然后再右移M%n位(考虑到计算速度,M/8可以用M>>3,M%8可以用M-M>>3)
应该是先移位完再把M/8个字节往前挪
同意6楼的!
[解决办法]for(i = 1; i < count; i++)
{
data[i] = (data[i] << 1) | (data[i - 1] & 0x01);
}
data[0] = data[0] << 1;