搜索
编程论坛
→
.NET专区
→
『 C# 论坛 』
→ << 和 ==的疑问
标题:
<< 和 ==的疑问
只看楼主
lyp_order
等 级:
新手上路
帖 子:1
专家分:0
注 册:2013-3-13
楼主
问题点数:0 回复次数:2
<< 和 ==的疑问
怎么来的
不是该是false?
搜索更多相关主题的帖子:
false
2013-03-13 10:48
yhlvht
等 级:
贵宾
威 望:
36
帖 子:707
专家分:4405
注 册:2011-9-30
第
2
楼
得分:0
这里有几个概念:
首先,运算符的先后顺序。
=号,为赋值符号,是最后执行的。
先看第一个图:
int a = 2008;
int c1 = a << 2;
int c2 = a >> 2;
<<号为位运算符号,操作对象是二进制,含义是整个二进制值左移,a << 2 表示 a的二进制左移2位。
那么首先a的值是10进制的2008,我们转换成二进制为11111011000
现在我们将这个值左移两位,实际上就是在值的最右边补上了两个0,变为11111011000
00
因为c1是int型,那是十进制数,那么我们将1111101100000转回十进制,为8032
>>同理,右移符号,右移相当于把二进制最右边的直接去掉
11111011000 >> 2 后变为 111110110 ,转成十进制为502。
第二个图
c的值确实应该为false,为true是错误的
2013-03-13 13:35
yhlvht
等 级:
贵宾
威 望:
36
帖 子:707
专家分:4405
注 册:2011-9-30
第
3
楼
得分:0
补充说明:简便算法
>>符号对于十进制来说,相当于除号,除数为2
右移1位,相当于除以2,右移2位,相当于两次除以2
那么2008 >> 2,相当于 2008 除以 2 ,等于1004,再除以2,值为502
<<相当于乘以2
2008 << 2,相当于 2008 乘以2,等于4016,再乘以2,值为8032
2013-03-13 13:46
3
1/1页
1
参与讨论请移步原网站贴子:
https://bbs.bccn.net/thread-400650-1-1.html
关于我们
|
广告合作
|
编程中国
|
清除Cookies
|
TOP
|
手机版
编程中国
版权所有,并保留所有权利。
Powered by
Discuz
, Processed in 0.405804 second(s), 9 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved