今天看Java写的一个五子棋的游戏源码,发现其中用到了异或来标志棋子的状态,而其中负数异或的结果让我感到有点不解,于是探究了一番。
-1^3=?
byte型的-1在计算机中以补码形式存储,原码为10000001,补码为原码非符号位取反加1,即为11111111。
byte型的3的原码、补码都一样,在计算机中的存储为00000011。
如果用原码与3异或:10000001^00000011=10000010=-2
如果用补码与3异或:11111111^00000011=11111100,为补码形式,减一取反后为10000100=-4
而写个简单的System.out.println(-1^3)得出的结果是-4,所以在计算机中确实是以补码形式运算的。其他的运算也是一样~
这个test虽然很低级,但是很容易被忽略,备忘一下~
分享到:
相关推荐
异或校验工具。十六进制异或值计算。。。。。。。。。。
CRC计算器工具,有和、异或、异或取反等校验方法计算,方便前期应用开发
crc 异或校验 c语言 方便移植
用qt实现的异或计算工具(带源码),16进制输入按字节进行异或,带输入错误提示。
异或计算器,可以执行同时执行和校验与8位异或校验
简单的异或加密,一个小例子,异或加密,需要的朋友,可以自己下载,希望对你有帮助。
CString 按位异或 CString 按位异或 CString 按位异或
异或校验和工具,用于计算十六进制数据的异或校验和。
最简单的进行两图像的加减和异或,同或,运算。
用labview写的,用于字符串ascii码异或和校验,文件中转有dll库 可以到http://www.ip33.com/bcc.html这个网址验证是否正确
用于计算十六进制的异或运算,内含源文件以及执行文件
可进行十六进制字符串按位异或运算,就是输入十六进制数,每个十六进制数间输入空格,然后点输出即可得到结果
目前在做和GPS通讯协议相关的项目项目中有用到异或和校验的部分就自己写了小工具包含源码给需要的朋友。 输入内容为 16进制字符串 输出也是16进制的字符串
这是使用异或实现的简单的文件的加解密,另外还有一个我的资源实现加解密的在这里:https://download.csdn.net/download/lxiao428/10802653
计算十六进制串异或值;发送的设备命令通常为十六进制串形式;并采用异或进行校验,此工具帮助计算异或值,节省手动计算时间; 更新版
用matlab软件实现两幅图像的异或运算代码,运行保证正确
一些关于命令异或校验、CRC校验和二进制、十六进制、十进制、字符类型之间的转换
最大的异或 题目描述:给你n个正整数,你要找出哪两个数按位异或运算后的结果是最大的。 输入:输入一个整数n(2<=n<=100000),然后就是n个109以内的正整数。 输出:输出最大的按位异或运算结果。 样例...
求异或值的软件