gpt4 book ai didi

java - 这个颜色生成代码中的 "&"和 "|"有什么用?

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:57:46 27 4
gpt4 key购买 nike

刚刚在 YouTube 上偶然发现 designsbyzephy 的 2d 游戏开发视频系列,并决定学习和理解视频中的代码将是我的下一个 Java 学习冒险。

最大的障碍是尝试自己破译代码,因为视频制作者采用一种非常不友好的新手方式来解释所有内容。

这是我的问题和视频

视频:http://www.youtube.com/watch?v=7eotyB7oNHE

5:31,他输入代码

int index = 0;
for (int r = 0; r < 6; r++){
for (int g = 0; g < 6; g++){
for (int b = 0; b < 6; b++){

int rr = (r * 255/5);
int gg = (g * 255/5);
int bb = (b * 255/5);

colors[index++] = rr << 16 | gg << 8 | bb;
}
}
}
colors[index++] = rr << 16 | gg << 8 | bb;

根据我的理解,他用每种颜色的 6 种色调创建的所有组合填充数组,但我不明白 | 符号代表什么。他在视频中提到他在之前的视频中谈到过它,但他没有,我查了一下,我确信他误会了他对 &| 的解释,因为他确实略微谈到了 & 操作,但在他以前的任何视频中都没有提到 | 。我不明白的另一件事是我们为什么要改变颜色。他在视频中解释了它,但它对我来说仍然没有意义。基本上他说的是我们移动它,因为 bbggrr 都有 2&8 位数据,但事实并非如此足以作为我的解释。我需要知道我们为什么这样做,为什么我们需要向左移动只是因为 bbggrr 颜色有其中有 2^8 位数据,首先有 2^8 位数据意味着什么?

最佳答案

java中的|就是位或运算符:Bitwise operations没有看整个视频,我猜他想做的是所有颜色值 (RGB) 转换为一个 32 位整数。因为 rr,gg,bb 只能有值从0到255,只需要8bits,他可以通过移位和/或操作将它们放入一个变量中。例如:

rr:       00000000 00000000 00000000 10101010
rr<<16: 00000000 10101010 00000000 00000000

gg: 00000000 00000000 00000000 11110000
gg<<8: 00000000 00000000 11110000 00000000

bb: 00000000 00000000 00000000 00001111

value = rr << 16 | gg << 8 | bb

rr<<16: 00000000 10101010 00000000 00000000
gg<<8: 00000000 00000000 11110000 00000000
bb: 00000000 00000000 00000000 00001111

value: 00000000 10101010 11110000 00001111
^ ^ ^
rr gg bb

所以现在我们将所有三种颜色值都放在一个整型变量中。

关于java - 这个颜色生成代码中的 "&"和 "|"有什么用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14791416/

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