最近做项目中要取一个long类型的几位,分别取出这几位的值,通过询问同事和问度娘,自己总结了一下:
需求:
我们知道long类型占四个字节,一个字节8位,所以long类型32位,这里要求取出前13位,中间8位,后11位
代码:
这里再分析一下具体细节
例如:10010011
取前三位
10010011&11100000(0xE0),得到10000000,再右移5位,表达式为(10010011&0xE0)>>5
取后三位
10010011&00000111(0x07),得到00000011,表达式为10010011&0x07
取中间三位
10010011&00011100(0x1C),得到00010000,再右移三位,表达式是(10010011&0x1C)>>3
如有错误或者不恰当处,希望各位指出,谢谢