java - java 移位位

标签 java bit-manipulation

要插入值,首先使用掩码清除与给定颜色 channel 对应的像素的 8 位。例如,对于红色,将 8 位掩码左移 16 位,将其反转(使用 ~ 运算符),然后使用 RGB 值“与”(&) 该掩码,从而清除 8 位红色并保持其他位不变。接下来,将参数值(在本例中为红色)左移相同位数(在红色情况下为 16),并将移位后的值“或”(|) 转换为像素值。

int getRed(){
    red = (Pixel>>16);
    red = ~Pixel;
    red = Pixel<<16 | Pixel;
    return red;
}

按照指示我做错了什么?

最佳答案

这里的问题似乎是理解赋值如何工作的一个基本问题(在 Java 中......以及几乎所有命令式编程语言!)。例如:

red = (Pixel>>16);
red = ~Pixel;

也就是说:

  1. 将移动 16 位的 Pixel 值分配给 red

  2. 将按位求反的 Pixel 值分配给 red。这破坏您在上一步中计算的red值。

如果您想对步骤 1 中计算的值取反,则需要执行以下操作:

red = ~red;

关于java - java 移位位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19215965/

相关文章:

java - 左移无符号字节,更好的方法?

java - 如何在没有命令行工具的情况下配置 AWS Amplify?

c - 确定设置了字节中的哪一位

java - 更改字节数组中的位

java - Gradle 命令行传递 org.gradle.jvmargs

assembly - 了解 bset 和 bclr

java - 左移丢失的信息是否存储在Java中的某个地方?

java - 如何禁用 niogroovymethods 的警告

java - 通过 javafx 设置 m3u8 播放列表的播放器

java - 使用tomcat部署应用程序时出错