Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我需要别人帮我做一些小动作_Java_Bit Manipulation_Bit - Fatal编程技术网

Java 我需要别人帮我做一些小动作

Java 我需要别人帮我做一些小动作,java,bit-manipulation,bit,Java,Bit Manipulation,Bit,我喜欢看到人们写一些无聊的代码,但我一点也不懂。经历了黑客的喜悦和痛苦,但我什么都不懂 例如: How come1 | 2返回3或How comea^=b;b^=a;a^=b交换值等 一种方法: private T[] ensureCapacity(int minCapacity) { if (tmp.length < minCapacity) { // Compute smallest power of 2 > minCapacity newSize |= new

我喜欢看到人们写一些无聊的代码,但我一点也不懂。经历了黑客的喜悦和痛苦,但我什么都不懂

例如:

How come
1 | 2
返回
3
或How come
a^=b;b^=a;a^=b交换值等

一种方法:

private T[] ensureCapacity(int minCapacity) {
   if (tmp.length < minCapacity) {
   // Compute smallest power of 2 > minCapacity
   newSize |= newSize >> 1;
   int newSize = minCapacity;
   newSize |= newSize >> 2;
   newSize |= newSize >> 4;
   newSize |= newSize >> 8;
   newSize |= newSize >> 16;
   newSize++;

    if (newSize < 0) // Not bloody likely!
      newSize = minCapacity;
    else
      newSize = Math.min(newSize, a.length >>> 1);

      @SuppressWarnings({"unchecked", "UnnecessaryLocalVariable"})
      T[] newArray = (T[]) new Object[newSize];
      tmp = newArray;
   }
   return tmp;
 }

最好使用
>
>
运算符我的意思是在Joshua Bloch修复了损坏的二进制搜索后,我知道使用
>>
而不是
>
是安全的。请帮助,如果有一个教程,那么上述来源,我将非常感谢

计算位输出的最简单方法是什么,例如
1 | 2=3

我的意思是,我不知道比特形式是什么样子,除非我用计算器什么的。。在没有任何帮助的情况下,有没有最简单的方法来计算这些东西

计算位输出的最简单方法是什么,例如1 | 2=3

把数字写成二进制。这就是数字的真实表示方式

  00000001
| 00000010
= 00000011

你需要学习一点,但这里有一个小备忘,可以知道二进制形式的数字

128 | 64 | 32 | 16 | 8 | 4 | 2 | 1
如果需要3,请从左向右填充包含创建数字3所需值的空格

128 | 64 | 32 | 16 | 8 | 4 | 2 | 1
                             X   X
2+1=3,因此将标有
X
的替换为
1
s,其余替换为
0
s

00000011
数字2也一样:

128 | 64 | 32 | 16 | 8 | 4 | 2 | 1
                             X
二进制结果是

00000010
关于47号:

128 | 64 | 32 | 16 | 8 | 4 | 2 | 1
            X        X   X   X   X
二进制结果:

00101111

这不是规则、公式或任何东西。它只是帮助你更快地转换数字,并在你的头脑中练习。如果你想玩比特游戏,你还需要学习很多:-)

地震平方根算法怎么样?这对于玩游戏或玩小游戏来说是可靠的吗?@huseyintugrulbuyukisik我想你的意思是,我相信它对游戏来说已经足够好了。考虑到所有其他不现实的事情,我怀疑这没有什么区别。@huseyintugrulbuyukisik不,不是地震平方根算法,我在寻找基础,不是进步。。谢谢……)简而言之,它工作的原因是因为数字的开始是一个指数,一个数字的对数的sqrt被2除(或移位1),这形成了sqrt的牛顿近似的开始近似。如果你做了第二次迭代,结果会更准确(但速度会慢)。你似乎在要求一个教程或什么,而不是一个特定问题的解决方案。您将在这里获得一些信息,但要获得更完整的软件包,请尝试《计算机编程艺术》第7.1.3章和《黑客的喜悦》。@askewchan我发现上面的解释非常有用。我想知道的一件事是,还有没有比这更简单或更高级的高级技巧,我会努力阅读并努力提高我的技能。。谢谢……:)
128 | 64 | 32 | 16 | 8 | 4 | 2 | 1
            X        X   X   X   X
00101111