正数与负数的异或操作(涉及补码)

首先异或操作是对每一位都进行异或(相同为0,不同为1),但需要先把数转换成补码才行。

1、正数的补码即本身

2、负数的补码为各位取反然后加1(最高为保持为1不变)

以-2的一个字节为例

原码: 1000 0010
反码: 1111 1101
补码: 1111 1110

3、将两数的补码按位进行异或

以 3 ^ (-2)为例

3 的补码:0000 0011
-2的补码:1111 1110

异或:    1111 1101  此为结果的补码,然后要反过来计算原码

由 原码 -> 取反 -> +1 补码  得 补码 -1 -> 取反 -> 原码

补码:    1111 1101
-1 :     1111 1100
原码:    1000 0011
即结果为 -3

 

全部评论

相关推荐

notbeentak...:真的nc,算毕业6月份,要给这种b公司打半年多白工😅
点赞 评论 收藏
分享
09-23 08:41
已编辑
门头沟学院 Java
牛客吹哨人:可恶!它越来越嚣张了...哨哥晚点统一更新到黑名单:能救一个是一个!26届毁意向毁约裁员黑名单https://www.nowcoder.com/discuss/1525833
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务