社区
C++ 语言
帖子详情
位运算的问题……
kero77
2008-03-03 03:40:46
int i=10;
cout<<~i<<endl;
为什么得到的结果是-11
我用的VS.net2005编译器
是编译器的问题吗?
i:0000 0000 0000 0000 0000 0000 0000 1010
~i:1111 1111 1111 1111 1111 1111 1111 0101
为什么是-11呢!怎么得到的呢!
我做了以下两种尝试
(1)
cout<<(~i)<<endl;
(2)
short i=10;
结果都是-11
...全文
140
10
打赏
收藏
位运算的问题……
int i=10; cout<<~i<<endl; 为什么得到的结果是-11 我用的VS.net2005编译器 是编译器的问题吗? i:0000 0000 0000 0000 0000 0000 0000 1010 ~i:1111 1111 1111 1111 1111 1111 1111 0101 为什么是-11呢!怎么得到的呢! 我做了以下两种尝试 (1) cout<<(~i)<<endl; (2) short i=10; 结果都是-11
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
无病呻吟2
2008-03-04
打赏
举报
回复
计算机存储的是补码
最高位为符号位~~~
int i
默认是有符号的。。。
ttkk_2007
2008-03-04
打赏
举报
回复
1111 1111 1111 1111 1111 1111 1111 0101 这事补码
要变成源码,先减一,再取反
减一:1111 1111 1111 1111 1111 1111 1111 0100
取反:1000 0000 0000 0000 0000 0000 0000 1011
Thinkingineverything
2008-03-04
打赏
举报
回复
事情是这样的
10 的 二进制码 为0000 0000 0000 0000 0000 0000 0000 1010
至于为什么cout < <(~i) < <endl; 的结果是-11可以这样看
因为负数的二进制是其相反数的二进制码取反加一
11 的 二进制是 0000 0000 0000 0000 0000 0000 0000 1011
所以-11 的二进制 是 1111 1111 1111 1111 1111 1111 1111 0101
在对上述结果取反 就是~10的结果 也就是
0000 0000 0000 0000 0000 0000 0000 1010
END
makewater
2008-03-03
打赏
举报
回复
计算机内部是补码表示的,你说的哪个东东是补码.
hai040
2008-03-03
打赏
举报
回复
用hex居然直接显示原码ffff fff5
int main()
{
int i = 10;
cout<<hex<<~i;
return 0;
}
Chappell
2008-03-03
打赏
举报
回复
求反之后等到补码,需要转换为原码
符号位不变,按位求反+1,即可得到原码
~i:1111 1111 1111 1111 1111 1111 1111 0101 (补码)
=>-000 0000 0000 0000 0000 0000 0000 1011
=>-11
Chappell
2008-03-03
打赏
举报
回复
二进制
234= 0000 0000 1110 1010
取反=1111 1111 0001 0101(补码,最高1表示负号)
= -000 0000 1110 1011
=-235
%x表示无符号数
1111 1111 0001 0101
= f f 1 5
Chappell
2008-03-03
打赏
举报
回复
int i;默认是signed
转换之后第一位是符号位为负数
baihacker
2008-03-03
打赏
举报
回复
-i = ~i + 1
CQZE
2008-03-03
打赏
举报
回复
有符号型的呀.
变成负数就是 -(i + 1)嘛
【每日易题】七夕限定——单身狗
问题
以及进阶
问题
位运算
法的深入探讨
本文介绍了如何使用
位运算
(异或)解决C++中的单身狗
问题
,包括找出单个出现一次的数字和两个单独出现的数字。作者通过实例演示和LeetCode题目的应用,展示了
位运算
在解决这类
问题
中的高效性。
位运算
问题
整合
本文介绍了
位运算
的基础知识,包括
位运算
简介、数值补码表示方法、无符号整型的概念,以及
位运算
符如按位与、按位或、按位异或的操作。通过实例解析了如何使用
位运算
解决
问题
,如P1100题目的高低位交换
问题
,展示
位运算
在优化计算速度上的优势。
位运算
解决N-皇后
问题
本文深入探讨
位运算
的基本概念和应用,通过八皇后
问题
的解决过程,展示
位运算
在算法设计中的高效运用。文章详细解释了与、或、异或、取反、左移、右移等
位运算
符的功能,以及它们在处理棋盘类
问题
时的巧妙应用。
使用
位运算
优化 N 皇后
问题
本文介绍了一种使用
位运算
优化N皇后
问题
的算法。通过将一维数组替换为32位整型变量的二进制状态信息来记录皇后的位置,并利用
位运算
减少不必要的检查,实现了算法效率的提升。
位运算
解决简单逻辑推理
问题
本文介绍了如何使用Go语言的
位运算
解决逻辑推理
问题
,通过一个实际的五人任务
问题
,展示了如何利用
位运算
规则分析并找出符合条件的解决方案。,
C++ 语言
65,211
社区成员
250,514
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章