c语言里的移位运算怎么算啊? 10

不是左移或右移相应位数然后补0吗?为什么15左移2位得60?15是01111左移2位不是11100不是-12吗?... 不是左移或右移相应位数然后补0吗?为什么15左移2位得60?15是01111左移2位不是11100不是-12吗? 展开
 我来答
microroom
科技发烧友

2019-12-24 · 智能家居/数码/手机/智能家电产品都懂点
知道大有可为答主
回答量:7118
采纳率:83%
帮助的人:1611万
展开全部
15用2进制表示是:
00001111(1字节),
0000000000001111(2字节),
...
左移2位后是:
00111100(1字节),
0000000000111100(2字节),
...
都是60。
因为最小单位是字节。
令温瓮秀
2019-11-01 · TA获得超过1471个赞
知道小有建树答主
回答量:1788
采纳率:100%
帮助的人:8.3万
展开全部
vc++6.0运行出来的确是11,反汇编代码如下面几位所给的,你估计也看不懂。这是一个有争议的代码,vs编译器和tc编译的结果又不一样,所以说这个只做下了解吧,二级c语言统考的时候应该不会出现这种题!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
heptnaol
2019-10-27 · TA获得超过7262个赞
知道大有可为答主
回答量:7120
采纳率:78%
帮助的人:1813万
展开全部
移位运算是满一个int长度溢出,所以其实是
00000000 00000000 00000000 00001111在左移
更多追问追答
追问
那如果是64位计算机就要填满64个数字吗?第一个数字就是符号位?
追答
那你要看你写的数带不带有L或者LL的后缀,啥也不带就是普通的int
比如:
printf("%lld", 1LL << 32);
和printf("%lld", 1 << 32);是不一样的,
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式