网站功能模块 分析,杭州网站推广服务,推荐一本学做网站的书,什么网站可以请人做软件下载在过去的一个月左右的时间里#xff0c;我每天花费一些时间来阅读Neo4j代码库的新部分#xff0c;以使其更加熟悉#xff0c;而我最喜欢的类之一是Bits类#xff0c;该类可以完成所有底层工作#xff0c;并且到磁盘。 特别是#xff0c;我喜欢它的toString方法#xff… 在过去的一个月左右的时间里我每天花费一些时间来阅读Neo4j代码库的新部分以使其更加熟悉而我最喜欢的类之一是Bits类该类可以完成所有底层工作并且到磁盘。 特别是我喜欢它的toString方法该方法返回以字节整数和长整数形式存储的值的二进制表示形式。 我认为尝试编写自己的函数将是一个有趣的练习该函数接受32位映射并根据是否设置了位返回包含1或0的字符串。 关键的见解是我们需要从最高位开始向下迭代然后创建该值的位掩码并使用完整的位图按位进行处理。 如果该计算的结果为0则不设置该位否则为1。 例如要检查是否设置了最高位索引31我们的位掩码将设置第32位所有其他位都设置为0。 java (1 31) 0x80000000
java.lang.Integer res5 -2147483648 如果要检查是否设置了最低顺序位则应运行以下计算 java (1 0) 0x00000001
java.lang.Integer res7 0java (1 0) 0x00000001
java.lang.Integer res8 1 现在将其放入检查位图的所有32位而不是仅检查我们定义的位的函数中 private String asString( int bitmap )
{StringBuilder sb new StringBuilder();sb.append( [ );for ( int i Integer.SIZE - 1; i 0; i-- ){int bitMask 1 i;boolean bitIsSet (bitmap bitMask) ! 0;sb.append( bitIsSet ? 1 : 0 );if ( i 0 i % 8 0 ){sb.append( , );}}sb.append( ] );return sb.toString();
} 并进行快速测试以检查其是否有效 Test
public void shouldInspectBits()
{System.out.println(asString( 0x00000001 ));// [00000000,00000000,00000000,00000001]System.out.println(asString( 0x80000000 ));// [10000000,00000000,00000000,00000000]System.out.println(asString( 0xA0 ));// [00000000,00000000,00000000,10100000]System.out.println(asString( 0xFFFFFFFF ));// [11111111,11111111,11111111,11111111]
} 整齐 翻译自: https://www.javacodegeeks.com/2015/05/coding-visualising-a-bitmap.html