什么"〜"(代字号)运算符在Java中做什么?

Adi*_*yev 6 java bit-manipulation tilde

代码操作符在Java中是如何工作的以及它的作用是什么?

但是我在Java中编写了几年的代码,我没有使用任何使用Java的严重按位操作.当开始阅读有关按位运算符时,代字号似乎很有趣,我想分享我的小经验.

Adi*_*yev 21

谷歌搜索关于"〜"(代字号)运算符没有给出一个明确的解释,初学者可以毫无问题地理解.此外,从Java SE6中删除有关逐位运算符的问题,因为Java SE6是一些人不学习逐位操作的原因.我的个人意见是每个程序员必须清楚地了解和理解逐位操作以及如何在软件开发中使用它们.

简单来说,"〜"(代字号)运算符只是逐位运算.这是什么意思?让我们编写几个代码并尝试一下:

public class Tilde
{
    public static void main(String args[]) {
        int x=3;
        int y=~x;

        System.out.println(x);
        System.out.println(y);    
    }
}
Run Code Online (Sandbox Code Playgroud)

结果将是:

-4
Run Code Online (Sandbox Code Playgroud)

3怎么变成-4?正如我所说,代字号是逐位非运算符.因此,操作以其二进制表示执行.3的二进制表示是11.我们将x声明为int,并且为内存中的x分配了4个字节(32位).记忆中3的表示是:

00000000000000000000000000000011
Run Code Online (Sandbox Code Playgroud)

当我们在3上执行波浪号运算符时,二进制表示为3的所有零将为1,所有1将为0:

11111111111111111111111111111100
Run Code Online (Sandbox Code Playgroud)

在JVM的实现中,这相当于-4.如果你尝试在-4上执行波浪线操作,你将获得3.

资料来源:http://docs.oracle.com/javase/tutorial/java/nutsandbolts/opsummary.html

原帖(在myblog中):http://blog.adil.az/post/55588073707/what-tilde-operator-does-in-java