大家好,我有一个 ~ 运算符的 for 循环,以前从未在任何代码上发现过这个
for (int i = 0; i < bytes.length; i++) {
mashed[i] = (byte) ~bytes[i];
}
〜做什么?
我在互联网上或以前在任何地方都没有找到这样的东西,所以也许有人可以帮助我提前谢谢
大家好,我有一个 ~ 运算符的 for 循环,以前从未在任何代码上发现过这个
for (int i = 0; i < bytes.length; i++) {
mashed[i] = (byte) ~bytes[i];
}
〜做什么?
我在互联网上或以前在任何地方都没有找到这样的东西,所以也许有人可以帮助我提前谢谢
来自 Java 的教程http://docs.oracle.com/javase/tutorial/java/nutsandbolts/op3.html,
一元按位补码运算符“~”反转位模式;它可以应用于任何整数类型,使每个“0”成为“1”,每个“1”成为“0”。例如,一个字节包含 8 位;将此运算符应用于位模式为“00000000”的值会将其模式更改为“11111111”。
它是按位运算符,不会对数据的每一位应用门。例如,当数据位为 101 时,它将变为 010。
用于按位反转- ~
0 变为 1,1 变为 0。
~
运算符是按位NOT,它反转二进制数中的位:
NOT 011100
= 100011
从文档:
一元按位补码运算符“~”反转位模式;它可以应用于任何整数类型,使每个“0”成为“1”,每个“1”成为“0”。例如,一个字节包含 8 位;将此运算符应用于位模式为“00000000”的值会将其模式更改为“11111111”。
波浪号 (~) 对数值进行按位补码。
1011 0011 = ~0100 1100