Какой оператор "~" (тильда) делает в 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