移位运算问题
各位好,对于移位运算弱弱的问个问题。
比如一个整形
int i= 16982;
它的二进制:100001001010110
int k = i >> 9;
这个时候得到的就是:100001 = 32;
我要问的就是我如何得到被移位掉的数呢,这里就是001010110被移位掉了,我想得到这个数不知道怎么操作,望各位指点一二。 移位操作
[解决办法]
100001 = 33!!
这和小学学过的求余数道理是一样的,被除数=除数*商+余数。此处为:
16982=33*(2^9)+ X。
这个问题,还可以将16982左移(16-9)位后,再右移回来就得到了你要的数了,高位的 100001 在运算中被截掉了。
[解决办法]
新手也来学习啊
[解决办法]
int i = 16982;
/* 这样j=001010110 */
int j = i & 0x1ff;
/* 这样k=100001 */
int k = i >> 9;