크기가 N(4배의 크기)인 정수 배열이 주어지고 input[1-4]가 유틸리티_arr[1-4]와 유사하고 계산 조건이 If arr[1이 되도록 배열에 대해 Xclusive OR 연산을 수행해야 합니다. – 4] ={a1, a2, a3, a4} 그러면 q[1 – 4] ={a1 ⊕ a2 ⊕ a3, a1 ⊕ a2 ⊕ a4, a1 ⊕ a3 ⊕ a4, a2 ⊕ a3 ⊕ a4}
이에 대한 다양한 입력 출력 시나리오를 살펴보겠습니다. -
에서 - 정수[] 입력 ={ 5, 2, 3, 4 };
밖으로 − XOR 연산 후 결과 4 3 2 5
설명 −Exclusive-OR 게이트의 출력은 두 입력 단자가 서로 "DIFFERENT" 논리 레벨에 있을 때만 "HIGH"가 됩니다. 이 두 입력 A와 B가 모두 논리 레벨 "1" 또는 "0"인 경우 출력은 "0"이 되어 게이트를 "홀수이지만 짝수 게이트가 아닌" 것으로 만듭니다. 즉, 입력에 1이 홀수인 경우 출력은 "1"입니다.
a1 ⊕ a2 ⊕ a3 =5 ⊕ 2 ⊕ 3 =4
a1 ⊕ a2 ⊕ a4 =5 ⊕ 2 ⊕ 4 =3
a1 ⊕ a3 ⊕ a4 =5⊕ 3 ⊕ 4 =2
a2 ⊕ a3 ⊕ a4 =2 ⊕ 3 ⊕ 4 =5
에서 - 정수[] 입력 ={ 7, 6, 4, 4, 3, 8, 9, 5 };
밖으로 − XOR 연산 후 결과 5 5 7 6 2 14 15 4
설명 − 배타적 논리합 게이트의 출력은 두 입력 단자가 서로 "DIFFERENT" 논리 레벨에 있을 때만 "HIGH"가 됩니다. 이 두 입력 A와 B가 모두 논리 레벨 "1" 또는 "0"인 경우 출력은 "0"이 되어 게이트를 "홀수이지만 짝수 게이트가 아닌" 것으로 만듭니다. 즉, 입력에 홀수개의 1이 있을 때 출력은 "1"입니다. 크기가 4의 배수인 입력[]에만 작동하며 다른 크기의 입력 배열은 홀수 자리에 0을 표시합니다.
XOR 연산 후 결과 5 5 7 6 2 14 15 4
아래 프로그램에서 사용된 접근 방식은 다음과 같습니다 -
-
XOR의 속성에 따르면 a ⊕ a =0이고 a ⊕ 0 =a입니다. (a ⊕ b ⊕ c) ⊕ (b ⊕ c ⊕ d) =a ⊕ d ((b ⊕ c) ⊕ (b ⊕ c) =0)
-
계산을 위해 배열은 4개의 그룹으로 나뉘며 XOR의 속성을 따라 각 그룹의 결과를 계산합니다.
-
(a ⊕ d)를 사용하여 위의 속성을 참조하면 b와 c(a ⊕ b ⊕ d) ⊕ (a ⊕ d) =b(a ⊕ c ⊕ d) ⊕ (a ⊕ d) =c피>
-
그리고 b와 c를 사용하여 다음 접근법을 사용하여 a와 d를 얻을 수 있습니다. ㄹ
-
이 과정은 4개 그룹 모두에 대해 반복됩니다.
-
루프는 배열의 길이를 4로 나누고 임시 값(ans)과 유틸리티 배열(답을 저장하는)이 도입될 때까지 2개의 포인터 i와 j로 반복됩니다.
-
for 루프 내에서 xor 연산이 구현됩니다.
ans=입력 배열[i] ⊕ 입력 배열[i+3]
유틸리티 배열[i+1](b 계산)=입력 배열[i+1] ⊕ ans
유틸리티 배열[i+2](c 계산)=입력 배열[i+2] ⊕ ans
유틸리티 배열[i](계산 a)=입력 배열[i] ⊕ ((유틸리티 배열[i + 1]) ^ (유틸리티 배열[i + 2]))
유틸리티 배열[i](d 계산)=입력 배열[i+3] ⊕ ((유틸리티 배열[i + 1]) ^ (유틸리티 배열[i + 2]))
-
그리고 포인터는 다음 4자 세트에 대해 업데이트됩니다.
-
마지막으로 배열이 인쇄되고 결과가 사용자에게 반환됩니다.
예시
import java.util.Arrays; import java.util.List; public class Tutorials{ static int ans = 0; public static void main(String args[]){ int[] input = {7, 1, 2, 3}; int[] arr = new int[input.length]; for (int i = 0, j = 0; j < input.length / 4; j++){ ans = input[i] ^ input[i + 3]; arr[i + 1] = input[i + 1] ^ ans; arr[i + 2] = input[i + 2] ^ ans; arr[i] = input[i] ^ ((arr[i + 1]) ^ (arr[i + 2])); arr[i + 3] = input[i + 3] ^ (arr[i + 1] ^ arr[i + 2]); i += 4; } System.out.println("Different XORs of elements in groups of size 4 is: "); for (int i = 0; i < arr.length; i++){ System.out.println(arr[i]); } } }
출력
위의 코드를 실행하면 다음과 같은 출력이 생성됩니다.
Different XORs of elements in groups of size 4 is : 4 5 6 0