社区
C++ 语言
帖子详情
两负数异或的问题
youyou1912
2013-03-21 09:12:58
int x = -100;
int y = -1;
int z = x^y;
最后z= 99 而不是 101 为什么呢?
最高位符号位异或为0变正数, 最低位0^1应该变1. 也就是增加+1. 现在变成-1了.
请指教. 谢谢.
...全文
524
5
打赏
收藏
两负数异或的问题
int x = -100; int y = -1; int z = x^y; 最后z= 99 而不是 101 为什么呢? 最高位符号位异或为0变正数, 最低位0^1应该变1. 也就是增加+1. 现在变成-1了. 请指教. 谢谢.
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
youyou1912
2013-03-21
打赏
举报
回复
对了, 负数用补码表示, 我弄错了. 晕. 谢谢几位.
wenhong609
2013-03-21
打赏
举报
回复
数据用补码表示,估计是你的补码搞错了吧!
ForestDB
2013-03-21
打赏
举报
回复
LZ还能说出-100存的啥样子?
fox_carnival
2013-03-21
打赏
举报
回复
打错了一个地方,以1个字节为例
fox_carnival
2013-03-21
打赏
举报
回复
int以2个字节为例: -100的补码:1001 1100 -1的补码: 1111 1111 异或后: 0110 0011 结果就是十进制99
异或
校验和计算工具
异或
校验和工具,用于计算十六进制数据的
异或
校验和。
C语言位运算符:与、或、
异或
、取反、左移和右移 (2).docx
。
异或
运算-算法.docx
异或
和
按位与 按位或 按位
异或
运算.pdf
。
数字的补数(左移+
异或
位运算)1
示例 2:输出:0解释:1 的二进制表示为 1(没有前导零位),其补数为 0。5 的二进制是:0101,7 的二进制是: 0111,它们的抑或为:0010,去掉
C++ 语言
65,159
社区成员
250,535
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章