java 位运算实现加密中为何array[i]异或的是20000?将20000换成其他数字结果就全部显示问号。求解释

java 位运算实现加密中为何array[i]异或的是20000?将20000换成其他数字结果就全部显示问号。求解释,第1张

array[i] = (char) (array[i]^20000)的结果超过了char字符对应的ascII值,建议你吧20000改成20,或者你判断char字符对应的ascII边界值也行。

按位异或需要将异或双方转换成二进制数,如当a=5时,二进制为101,与0异或后结果为100,也就是b=4的二进制了。
异或时的规则是:逐位进行比较,相同为0(即1与1异或为0,0与0异或为0),不同为1(即0与1异或为1,1与0异或为1)。

同&&

或||

异!


C语言是一门通用计算机编程语言,广泛应用于底层开发。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。

尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。

二十世纪八十年代,为了避免各开发厂商用的C语言语法产生差异,由美国国家标准局为C语言制定了一套完整的美国国家标准语法,称为ANSI C,作为C语言最初的标准。 [1]  目前2011年12月8日,国际标准化组织(ISO)和国际电工委员会(IEC)发布的C11标准是C语言的第三个官方标准,也是C语言的最新标准,该标准更好的支持了汉字函数名和汉字标识符,一定程度上实现了汉字编程。

C语言是一门面向过程的计算机编程语言,与C++,Java等面向对象的编程语言有所不同。

其编译器主要有Clang、GCC、WIN-TC、SUBLIME、MSVC、Turbo C等。

参考资料:C语言_百度百科

这个东西得等你深入学习后才能体会到它的妙处,现在先说一下也好:
异或:若参加运算的两个二进制位同号,则结果为0;异号则为1即 0异或0=0,1异或0=1,1异或1=0
应用:
1使特定位翻转。假设有01111010,想使其低4位翻转。可以将它与00001111进行异或运算。结果为01110101
2与0异或,保留原值。如012异或00=012
3交换两个值,不用临时变量。假如a=3,b=4。想将a和b的值互换,可以用以下赋值语句实现:
a=a异或b;
b=b异或a;
a=a异或b;


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/13064498.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-30
下一篇 2023-05-30

发表评论

登录后才能评论

评论列表(0条)

保存