2

大家好,我有一个 ~ 运算符的 for 循环,以前从未在任何代码上发现过这个

    for (int i = 0; i < bytes.length; i++) {
        mashed[i] = (byte) ~bytes[i];

        }

〜做什么?

我在互联网上或以前在任何地方都没有找到这样的东西,所以也许有人可以帮助我提前谢谢

4

8 回答 8

4

它的运营商 ~ bitwise NOT

按位非“~”运算符反转操作数中的每个位,即该运算符将所有 1 更改为 0,将所有 0 更改为 1。

所有运营商

并了解内部工作原理:按位补码 (~) 运算符如何工作?

于 2013-06-29T15:14:14.393 回答
2

它是按位补码运算符

例子:

如果值为 2 (0000 0010),则按位补码为 1111 1101

于 2013-06-29T15:13:55.540 回答
2

来自 Java 的教程http://docs.oracle.com/javase/tutorial/java/nutsandbolts/op3.html

一元按位补码运算符“~”反转位模式;它可以应用于任何整数类型,使每个“0”成为“1”,每个“1”成为“0”。例如,一个字节包含 8 位;将此运算符应用于位模式为“00000000”的值会将其模式更改为“11111111”。

于 2013-06-29T15:16:05.563 回答
1

它是按位运算符,不会对数据的每一位应用门。例如,当数据位为 101 时,它将变为 010。

于 2013-06-29T15:14:01.547 回答
1

用于按位反转- ~0 变为 1,1 变为 0。

于 2013-06-29T15:14:14.880 回答
1

~运算符是按位NOT,它反转二进制数中的位:

NOT 011100
  = 100011
于 2013-06-29T15:14:59.600 回答
1

文档

一元按位补码运算符“~”反转位模式;它可以应用于任何整数类型,使每个“0”成为“1”,每个“1”成为“0”。例如,一个字节包含 8 位;将此运算符应用于位模式为“00000000”的值会将其模式更改为“11111111”。

于 2013-06-29T15:15:40.173 回答
0

波浪号 (~) 对数值进行按位补码。

1011 0011 = ~0100 1100
于 2013-06-29T15:17:03.080 回答