Какой оператор "~" (тильда) делает в Java?

Как оператор тильды работает в Java и что он делает?

Несмотря на то, что я программирую на Java несколько лет, я не использовал никаких серьезных побитовых операций с использованием Java. Когда я начал читать о побитовом операторе, тильда показалась мне интересной, и я хотел поделиться своим небольшим опытом.

1 ответ

Решение

Поиск в Google оператора "~" (тильда) в Java не дал четкого объяснения, которое новички могут понять без проблем. Кроме того, удаление вопросов о побитовых операторах из экзамена на Java, поскольку 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);    
    }
}

Результатом будет:

-4

Как преобразовать 3 в -4? Как я уже сказал, тильда является побитовым оператором НЕ. Таким образом, операции выполняются с их двоичным представлением. Двоичное представление 3 равно 11. Мы объявили x как int, и для памяти x выделено 4 байта (32 бита). Представление в памяти 3:

00000000000000000000000000000011

Когда мы выполняем оператор тильды для 3, все нули в двоичном представлении 3 будут равны 1, а все будут равны 0:

11111111111111111111111111111100

В реализации JVM это равно -4. Если вы попытаетесь выполнить операцию тильды на -4, вы получите 3.

Источник: http://docs.oracle.com/javase/tutorial/java/nutsandbolts/opsummary.html

Оригинальный пост (в моем блоге): http://blog.adil.az/post/55588073707/what-tilde-operator-does-in-java

Другие вопросы по тегам