C#菜鸟 代码不懂!求教

来源:百度知道 编辑:UC知道 时间:2024/05/09 19:37:46
using System;
class Binary
{
public static void Main()
{
int t;
byte val=123;
for(t=128;t>0;t=t/2)
if((val&t)!=0) Console.WritenLine("1 ");
if((val&t)==0) Console.WritenLine("0 ");
}
}

就是这个按位与&运算 具体过程是怎么运算的?
if((val&t)!=0) Console.WritenLine("1 ");
if((val&t)==0) Console.WritenLine("0 ");
就是这个具体运算的说下
那书上说连续测试val种的每一位,来判断它是1还是0,
还是看得有点模糊,,,请大侠帮帮忙

具体过程如下:
循环开始时val=123 (01111011)
t=128 (10000000)
val&t的作用就是按位执行与运算,
因为t的值始终只有一位是1,
所以功能就是连续测试val中的每一位。

循环次数 t val&t 输出
1 (10000000) (00000000) 0
2 (01000000) (01000000) 1
3 (00100000) (00100000) 1
4 (00010000) (00010000) 1
5 (00001000) (00001000) 1
6 (00000100) (00000000) 0
7 (00000010) (00000010) 1
8 (00000001) (00000001) 1

一楼的说法有些欠缺啊,当t=1时,因为t是int类型,此时t/2=0,所以不会造成死循环,原来的代码没有错。
至于怎么取每一位了,那就是二楼说的没错了,t每次除以2,其实就是其二进制值每次都右移一位,因为只有一个位上是1,所以可以达到目的。

你的代码有问题:
for(t=128;t>0;t=t/2) t永远大于0,会进入死循环。

& 运算符 为整型和 bool 类型预定义了二进制 & 运算符。对于整型,& 计算操作数的按位“与”。对于 bool 操作数,& 计算操作数的逻辑“与”;也就是说,当且仅当两个操作数均为 true 时,其结果才为 true。

具体看MSDN:
关于C#的分页问题 菜鸟求教 菜鸟求教? 不懂 !求教 如何从一个什么都不懂的菜鸟变成C#高手 C#菜鸟问题 C# 菜鸟问问题 菜鸟请教C#问题 C#菜鸟求助!!! c# 菜鸟问题 菜鸟之C#问?