c语言里的移位运算怎么算啊? 10
不是左移或右移相应位数然后补0吗?为什么15左移2位得60?15是01111左移2位不是11100不是-12吗?...
不是左移或右移相应位数然后补0吗?为什么15左移2位得60?15是01111左移2位不是11100不是-12吗?
展开
3个回答
展开全部
vc++6.0运行出来的确是11,反汇编代码如下面几位所给的,你估计也看不懂。这是一个有争议的代码,vs编译器和tc编译的结果又不一样,所以说这个只做下了解吧,二级c语言统考的时候应该不会出现这种题!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
移位运算是满一个int长度溢出,所以其实是
00000000 00000000 00000000 00001111在左移
00000000 00000000 00000000 00001111在左移
更多追问追答
追问
那如果是64位计算机就要填满64个数字吗?第一个数字就是符号位?
追答
那你要看你写的数带不带有L或者LL的后缀,啥也不带就是普通的int
比如:
printf("%lld", 1LL << 32);
和printf("%lld", 1 << 32);是不一样的,
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询