2014-05-07 17:14 今天工作上需要一个Byte的低5位,高3位。所以查询了资料。总结下如何实现 百度到一个资料:介绍的很详细 http://www.blogjava.net/zhaomingchao/articles/298318.html 这里就写下代码,来实现他的实例。 工程的位置 : 截图如下:原文:http://www.cnblogs.com/jsRunner/p/3714206.html
1、位操作运算符的种类:&(与)、|(或)、~(取反)、^(异或)、<<(左移)、>>(右移)、>>>(无符号右移)。2、位运算符操作不会短路。3、位运算符操作的是补码,所以~后正负号会发生变化。4、位运算符只能用于整型。其中移位运算符需要注意的地方:三个移位运算符的相同点:当移位的位数超出数值的位数则会取模后再移位。<<(左移):左移所操作数字的补码,二进制补码整体左移(包括符号位),溢出则舍弃,低位补0。这意味着...
一,计算某个正数的二进制表示法中 1 的个数1//求解正数的二进制表示法中的 1 的位数2privatestaticint countBit(int num){
3int count = 0;
4for(; num > 0; count++)
5 {
6 num &= (num - 1);
7 }
8return count;
9 }算法思路:每次for循环,都将num的二进制中最右边的 1 清除。为什么n &= (n – 1)能清除最右边的1呢?因为从二进制的角度讲,n相当于在n - 1的最低位加上1。举个例子,8(1000)= ...
好的,这可能真是愚蠢,但是我不明白为什么这不起作用.byte temp = (byte)0x80;System.out.println(temp);byte holder = (byte)(temp | 0x40);System.out.println(holder);产生:
-128
-64
不应该按位排列:
10000000
01000000
产量
11000000
还是-192?解决方法:如果您打印0x80 | 0x80代表128,040代表64. 64将输出192.
当您将字节强制转换为128时-128变为-128,则Byte.MAX_VALUE为127.
因此,您评估的表达式是-128 | 64,而您可能期望1...
Math.abs(x)的正常实现(由Oracle实现)由下式给出public static double abs(double a) {return (a <= 0.0D) ? 0.0D - a : a;
}将数字符号的一位编码设置为零(或一个)不是更快吗?我想只有一位编码数字的符号,并且它总是相同的位,但我可能错了.
或者我们的计算机通常不适合使用异常指令对单个位进行操作?
如果可以更快地实施,你能给它吗?
编辑:
我已经向我指出Java代码是独立于平台的,因此它不能依赖于单个机器的异常指令.但是,为...
我有一个值为0111000000的字符串.如何对此字符串执行按位运算?
如果我将它转换为整数,使用?运算符并将其转换回二进制字符串,结果字符串有额外的位.我希望输出正好是1000111111.
以下代码工作正常,但它不是一个好方法.还有另一种更好的方法吗?String bstr="";while(m!=str.length()){ char a=str.charAt(m);if(a=='1'){a='0';bstr=bstr+a;m++; }else{a='1'; bstr=bstr+a;m++;}
}解决方法:试试这个char[] a = s.toCh...
是否有一个类使得按位操作更容易?我需要一些读取整数的方法,比特的“值”给出它们的偏移和长度(在32/64位字节数组中).
我可以使用java提供的位操作,但我更喜欢使用调试类.解决方法:看看BitSet.这是一个usage example,它看起来像演示类似于你需要做的代码.