English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Анализ кода проблемы XOR в Java

В операторах битовом языка программирования Java есть оператор, называемый "исключающее ИЛИ" (XOR), который обозначается символом (^). Его правила выполнения: если биты операндов одинаковы, результат равен 0, если различны, результат равен 1. Вот пример:

public class TestXOR{
	public static void main(String[] args){
		int i = 15, j = 2;
		System.out.println("i ^ j = " + (i ^ j));
	}
}

Результат выполнения: i^j=13.

Анализ программы: i=15 в двоичном виде равен 1111, j=2 в двоичном виде равен 0010, в соответствии с правилами исключения или получаем 1101, который в десятичном виде равен 13.

Используя это правило, мы можем灵活 использовать его в некоторых алгоритмах. Например, предположим, что у нас есть 2K+1 чисел, из которых 2k чисел повторяются, и нам нужно найти то, что не повторяется, например: 2, 3, 4, 4, 3, 5, 6, 6, 5. Мы можем использовать оператор XOR так:

public class TestXOR{
	public static void main(String[] args){
		int[] array = {2,3,4,4,3,5,6,6,5};
		int v = 0;
		for (int i = 0; i < array.length; i++) {
			v ^= array[i];
		}
		System.out.println("Число,出现的次数是一次: " + v);
	}
}

Результат: число,出现的次数是一次的是2.

Мы используем правила оператора XOR, чтобы понять, что число, которое исключает с нулем, все еще является само собой, и что число, исключающее само себя, равно нулю.

Способ расчета: v=2^3^4^4^3^5^6^6^5;

На основе правила обмена и вышеуказанных правил

Можем вывести число,出现的次数为一次(необходимо выполнить предварительное условие 2k раз)

Обобщение

Вот полный анализ кода о проблеме XOR в Java, который я предоставил. Надеюсь, это поможет вам. Те, кто интересуется, могут продолжить читать другие связанные темы на этом сайте. Если у вас есть предложения, пожалуйста, оставьте комментарий. Спасибо за поддержку этого сайта!

Заявление: содержимое этой статьи взято из Интернета, авторские права принадлежат соответствующему автору. Контент предоставлен пользователями Интернета в добровольном порядке и загружен самостоятельно. Этот сайт не имеет права собственности на него, не производил ручную редактуру и не несет ответственности за соответствующие юридические последствия. Если вы обнаружите контент,涉嫌侵犯版权, пожалуйста, отправьте письмо по адресу: notice#oldtoolbag.com (во время отправки письма замените # на @), чтобы сообщить о нарушении, и предоставьте соответствующие доказательства. В случае подтверждения нарушения, этот сайт немедленно удалят涉嫌侵权的内容。

Вам может понравиться