3ki*_*ngs 1 java binary bit-manipulation extract bit
我有一个二进制数,看起来像这样:
00000000 00000000 00000011 00001101 = 781 integer value = integer name "packed"
Run Code Online (Sandbox Code Playgroud)
如何在java中使用bit wise提取每个值作为单独的整数值.如下:
int a = (function) = 00000000;
int b = (function) = 00000000;
int c = (function) = 00000011;
int d = (function) = 00001101;
Run Code Online (Sandbox Code Playgroud)
如果你能看到我在那里做什么..我希望前8个成一个整数,然后下一个整数,依此类推......我认为你在java中使用有点明智但我完全不确定.任何帮助表示赞赏.对不起,但我对这种事情全新,真的需要帮助,谢谢!基本上(函数)应该像这样:
packed >> 5; (I know this isn't nearly right that is why i am needing help on this)...
Run Code Online (Sandbox Code Playgroud)
谢谢!
你是对的,这里需要按位操作.
首先,使用掩码仅隔离您感兴趣的位,关闭所有其他位:
value & 0xFF000000 // isolate most significant 8 bits
value & 0x00FF0000 // isolate next 8 bits
value & 0x0000FF00 // isolate next 8 bits
value & 0x000000FF // isolate least significant 8 bits
Run Code Online (Sandbox Code Playgroud)
然后,位位移入最低位显著存储到a,b,c,和d(一个无符号的位位移):
(value & 0xFF000000) >>> 24 // Shift bits 24-31 to bits 0-7
(value & 0x00FF0000) >>> 16 // Shift bits 16-23 to bits 0-7
(value & 0x0000FF00) >>> 8 // Shift bits 8-15 to bits 0-7
(value & 0x000000FF) // No need to shift the last one!
Run Code Online (Sandbox Code Playgroud)