「java异或校验」JAVA异或

博主:adminadmin 2023-01-17 08:36:09 420

本篇文章给大家谈谈java异或校验,以及JAVA异或对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

java的异或运算,求助!

提供思路

将每个字节左移拼成8个字节 第一个左移56 第二个48.。。。

0x30 0x31 0x39 0x39 0x39 0x39 0x39 0x39

0011 0000 0011 0001 0011 1001 0011 1001 0011 1001 0011 1001 0011 1001 0011 1001 。。。

然后将3个8字节异或 最后右移还原

JAVA怎么做CRC校验的程序

实现方法:最简单的校验就是把原始数据和待比较数据直接进行比较,看是否完全一样这种方法是最安全最准确的。同时也是效率最低的。

应用例子:龙珠cpu在线调试工具bbug.exe。它和龙珠cpu间通讯时,bbug发送一个字节cpu返回收到的字节,bbug确认是刚才发送字节后才继续发送下一个字节的。 实现方法:在数据存储和传输中,字节中额外增加一个比特位,用来检验错误。校验位可以通过数据位异或计算出来。

应用例子:单片机串口通讯有一模式就是8位数据通讯,另加第9位用于放校验值。

bcc异或校验法(block check character)

实现方法:很多基于串口的通讯都用这种既简单又相当准确的方法。它就是把所有数据都和一个指定的初始值(通常是0)异或一次,最后的结果就是校验值,通常把它附在通讯数据的最后一起发送出去。接收方收到数据后自己也计算一次异或和校验值,如果和收到的校验值一致就说明收到的数据是完整的。

校验值计算的代码类似于:

unsigned uCRC=0;//校验初始值

for(int i=0;iDataLenth;i++) uCRC^=Data[i];

适用范围:适用于大多数要求不高的数据通讯。

应用例子:ic卡接口通讯、很多单片机系统的串口通讯都使用。 (Cyclic Redundancy Check)

实现方法:这是利用除法及余数的原理来进行错误检测的

java中求16进制异或和

public class Test {

public String a;

public static void main(String[] args) {

int[] a = new int[] { (int) 0X8A, (int) 0X12, (int) 0X05,

(int) 0X07, (int) 0XFE, (int) 0XE3, (int) 0X0A,

(int) 0X06, (int) 0X10, (int) 0X14, (int) 0X29 };

int ChkSum = 0;

for (int i = 0; i 2 ; i++) {//a.length,只有在为2时结果为98,也就是说只验证了0X8A,0X12这2个数

ChkSum = (int) (ChkSum ^ a[i]);

}

System.out.println(Integer.toHexString(ChkSum)+"H");

}

}

N的输入我就不写了,自己给了一个固定值2,你把 i2中的2替换成 输入值就好

java中的(或运算,异或运算,与运算)解释下

java中或运算、异或运算、与运算的使用实例和解释如下:

public class Test {    public static void main(String[] args) {        

// 1、左移(  )        

// 0000 0000 0000 0000 0000 0000 0000 0101 然后左移2位后,低位补0:

//        // 0000 0000 0000 0000 0000 0000 0001 0100 换算成10进制为20        System.out.println(5  2);// 运行结果是20         

// 2、右移(  ) 高位补符号位        

// 0000 0000 0000 0000 0000 0000 0000 0101 然后右移2位,高位补0:       

 // 0000 0000 0000 0000 0000 0000 0000 0001       

  System.out.println(5  2);// 运行结果是1         

  // 3、无符号右移(  ) 高位补0        

  // 例如 -5换算成二进制后为:0101 取反加1为1011       

   // 1111 1111 1111 1111 1111 1111 1111 1011        /

   / 我们分别对5进行右移3位、 -5进行右移3位和无符号右移3位:       

    System.out.println(5  3);// 结果是0       

     System.out.println(-5  3);// 结果是-1        

     System.out.println(-5  3);// 结果是536870911         

     // 4、位与(  )        

     // 位与:第一个操作数的的第n位于第二个操作数的第n位如果都是1,那么结果的第n为也为1,否则为0        

     System.out.println(5  3);// 结果为1        

     System.out.println(4  1);// 结果为0         

     // 5、位或( | )        

     // 第一个操作数的的第n位于第二个操作数的第n位 只要有一个是1,那么结果的第n为也为1,否则为0        

     System.out.println(5 | 3);// 结果为7         

     // 6、位异或( ^ )        

     // 第一个操作数的的第n位于第二个操作数的第n位 相反,那么结果的第n为也为1,否则为0         

     System.out.println(5 ^ 3);//结果为6         

      // 7、位非( ~ )        // 操作数的第n位为1,那么结果的第n位为0,反之。        System.out.println(~5);// 结果为-6     } }

JAVA字符串异或

存在按位异或,就是根据数据在内存中的二进制数的存放形式进行异或操作,

但是不存在字符串的异或

如果在内存中的数据:01010101和10101010异或,结果就是11111111,然后再将

11111111转换成相应的数据输出结果

注意:Java中没有字符串的异或、与、或、非操作,不是C语言那样(除非是你自己定义异或操作)

java中异或是怎样算的

异或运算(^)都以二进制数据为基础进行的运算。也就是说当代码中使用到异或运算时,都会先将两个条件进行转换,转换成二进制数据后,再进行运算。异域中同位如果值相同(都是0或者都是1)则为0,不同(一个是0,一个是1)为1。

例如

int a=4;

int b=6;

int c = a^b;//c的值是a和b的异或。值为2.过程

1、a的值二进制是

0000 0100 //这里去低8位,因为高位都一致。 2、b的值二进制是

0000 0110 3、异或后

0000 0010 //结果是2

关于java异或校验和JAVA异或的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。