当前位置:编程学习 > C#/ASP.NET >>

c# 里面 int a=7,b=8;int c=a<<4;d=c&b;问什么 输出d 为0?

如题  球高手 解释? --------------------编程问答--------------------  不显示删除回复显示所有回复显示星级回复显示得分回复 c# 里面 int a=7,b=8;int c=a<<4;d=c&b;问什么 输出d 为0?[问题点数:40分]

c=a<<4. a  111<<4=1110000
b=1000.           0001000

与运算会吧,上面两个结果与肯定是0   --------------------编程问答-------------------- << 左移运算符 (<<) 将第一个操作数向左移动第二个操作数指定的位数
n<<4,相当于 n*16 
01110000
1000
& 计算操作数的逻辑按位“与” --------------------编程问答-------------------- c=112; 转换成2进制是1110000
d=8;转换成2进制后是1000

那么1110000&0001000 根据位逻辑与运算规则:1与1等于1,1与0等于0
得到结果是:0000000 即0
--------------------编程问答-------------------- int a=7,b=8;int c=a<<4;d=c&b
a = 7用二进制是这样的0000 0111 
b = 8 是0000 1000
c = a << 4 是将a左移4位为0111 0000
d = c&b 是逻辑与 0000 1000 和 0111 0000,没有同一个位都为1的所以结果为0 --------------------编程问答-------------------- 首先:<<为左移运算符,a=7,是int类型.。a的二进制为0111,左移4位后得到c,二进制为:01110000。
其次看b,二进制为:1000。
二者用&运算。
0····01110000     //为c
0····00001000     //为b
————————————
0····00000000     //为d

所以输出为0。
--------------------编程问答-------------------- 哦 恍然大悟 --------------------编程问答-------------------- 学习了…………………… --------------------编程问答-------------------- 学习ing
--------------------编程问答--------------------  同学。。 --------------------编程问答--------------------
引用 2 楼 wuyq11 的回复:
<< 左移运算符 (<<) 将第一个操作数向左移动第二个操作数指定的位数
n<<4,相当于 n*16 
01110000
1000
& 计算操作数的逻辑按位“与”

UP,看来LZ不搞清符号的含义啊 --------------------编程问答-------------------- 糊涂了 谢谢热心的 各位 --------------------编程问答-------------------- --------------------编程问答-------------------- 跟进学习了。 --------------------编程问答-------------------- 这个的作用是什么? --------------------编程问答-------------------- 弄清运算符
补充:.NET技术 ,  C#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,