首页 > Java > java教程 > 正文

在Java中,使用大小为4的组对元素进行不同的XOR操作来查找数组

WBOY
发布: 2023-08-26 10:45:07
转载
1294人浏览过

在java中,使用大小为4的组对元素进行不同的xor操作来查找数组

把下面这句话翻译成中文,保留html代码,不用增加新内容:

我们被给予一个大小为N(4的倍数的大小)的整数数组,我们必须 对数组执行异或运算,使得 input[1- 4] 类似于 utility_arr[1- 4]和计算条件是如果arr[1 – 4] = {a1, a2, a3, a4} 那么 q[1 – 4] = {a1 ⊕ a2 ⊕ a3, a1 ⊕ a2 ⊕ a4, a1 ⊕ a3 ⊕ a4, a2 ⊕ a3 ⊕ a4}

让我们看看这种情况的各种输入输出场景 -

In − int[] input = { 5, 2, 3, 4 };

Out − 异或后的结果运算 4 3 2 5

解释−异或门的输出仅在其两个输入端子处于“不同”逻辑电平时才变为“高”。如果这两个输入 A 和 B 都处于逻辑电平“1”或“0”,则输出为“0”,从而使门成为“奇数门但不是偶数门”。换句话说,当输入有奇数个 1 时,输出为“1”。

立即学习Java免费学习笔记(深入)”;

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

In − int[] input = { 7, 6, 4, 4, 3, 8, 9, 5 };

Out − XOR 运算后的结果 5 5 7 6 2 14 15 4

说明− 异或门的输出仅在其两个输入时变为“高”终端处于彼此“不同”的逻辑电平。如果这两个输入 A 和 B 都处于逻辑电平“1”或“0”,则输出为“0”,从而使门成为“奇数门但不是偶数门”。换句话说,当输入有奇数个 1 时,输出为“1”。仅适用于大小为 4 倍数的 input[],其他大小的输入数组将显示 0 代替奇数位置的数字。

异或运算后的结果 5 5 7 6 2 14 15 4

下面程序中使用的方法如下 -

  • 根据 XOR a ⊕ a = 0 和 a ⊕ 0 = a 的性质。 (a ⊕ b ⊕ c) ⊕ (b ⊕ c ⊕ d) = a ⊕ d (As (b ⊕ c) ⊕ (b ⊕ c) = 0)

    腾讯混元
    腾讯混元

    腾讯混元大由腾讯研发的大语言模型,具备强大的中文创作能力、逻辑推理能力,以及可靠的任务执行能力。

    腾讯混元 65
    查看详情 腾讯混元
  • 对于计算时将数组分为 4 组,我们将按照 XOR 的性质来计算每组的结果。

  • 参考上述性质,使用 (a ⊕ d )我们可以计算b和c (a ⊕ b ⊕ d) ⊕ (a ⊕ d) = b (a ⊕ c ⊕ d) ⊕ (a ⊕ d) = c

  • 通过使用 b 和 c,我们可以使用以下方法得到 a 和 d (a ⊕ b ⊕ c) ⊕ (b) ⊕ (c) = a (b ⊕ c ⊕ d) ⊕ (b) ⊕ (c) = d

  • 对所有四组重复该过程

  • 使用 2 个指针 i 和 j 迭代循环,直到数组的长度除以四,并引入临时值(ans)和实用程序数组(存储答案)。

  • 在 for 循环内实现以下异或运算

    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) )= input array[i+3] ⊕ ((Utility array[i + 1]) ^ (Utility array[i + 2]))

  • 并且指针被更新对于下一组四个字符

  • 最后,打印数组并将结果返回给用户。

示例

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
登录后复制

以上就是在Java中,使用大小为4的组对元素进行不同的XOR操作来查找数组的详细内容,更多请关注php中文网其它相关文章!

相关标签:
java速学教程(入门到精通)
java速学教程(入门到精通)

java怎么学习?java怎么入门?java在哪学?java怎么学才快?不用担心,这里为大家提供了java速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:tutorialspoint网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号