社区
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
...全文
97
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
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
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)嘛
相关推荐
位运算
符,
位运算
,位段
位运算
是指按二进制位进行的运算。因为在系统软件中,常要处理二进制位的
问题
。文章介绍
位运算
符和
位运算
,
位运算
举例,位段等
LeetCode总结,
位运算
总结
对于
位运算
面试
问题
,其实我觉得是最不好处理的一类
问题
,原因在于他的技巧性和规律性太强,往往需要根据若干种基本运算规则(见下面)及其组合达到特定目的运算,难就难在技巧性。本文罗列了几种常见的
位运算
面试
问题
。 一,
位运算
基础知识 C++中
位运算
基本符号:~ | & ^ > ! 其中 !和 ~ 是不同的。 基本的位操作符有与、或、非,异或、同或、取反
N皇后
问题
(
位运算
,C语言版)
N皇后
问题
(
位运算
,C语言版) N皇后
问题
求解
位运算
位运算
的
问题
总结
位运算
问题
总结
皇后
问题
-
位运算
皇后
问题
位运算
发帖
C++ 语言
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
6.3w+
社区成员
25.0w+
社区内容
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
帖子事件
创建了帖子
2008-03-03 03:40
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下