gpt4 book ai didi

java - 我需要关于 Bit Twiddling 的帮助

转载 作者:行者123 更新时间:2023-11-30 04:23:00 25 4
gpt4 key购买 nike

我喜欢看到人们编写 Bit Twiddling 代码,但我根本无法理解它。经历了黑客的喜悦和http://graphics.stanford.edu/~seander/bithacks.html ,但我什么也没明白。

例如:

怎么1 | 2 返回 3 或者为什么 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;
}

下面的人正在做什么:

int newSize = minCapacity;
newSize |= newSize >> 1;
newSize |= newSize >> 2;
newSize |= newSize >> 4;
newSize |= newSize >> 8;
newSize |= newSize >> 16;
newSize++;

newSize = Math.min(newSize, a.length >>> 1);

最好使用 >>>>> 运算符我的意思是在 Joshua Bloch 修复了损坏的二分搜索之后我明白使用 >>> 是安全的 而不是 >>。请帮忙,如果有教程,那么上述来源我将非常感激。

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

我的意思是,除了使用计算器或其他东西之外,我不知道位形式看起来如何。.有没有最简单的方法来计算这些东西,而无需任何帮助,但要记住?

最佳答案

What is the easiest way to calculate the output of bits for example 1 | 2 = 3.

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

  00000001
| 00000010
= 00000011

关于java - 我需要关于 Bit Twiddling 的帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16549303/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com