using System;
class MainClass
{
    static void Main()
    {
        int t;
        byte val;
        val = 123;
        for (t = 128; t > 0; t = t / 2)
        {
            if ((val & t) != 0) Console.Write("1 ");
            if ((val & t) == 0) Console.Write("0 ");
        }
    }
}
累计结果是 01111011 我的理解是
if(123 & 128)1  不等于 0  显示 1  
if(123 & 128)1  等于   0  显示 0   
if(123 & 64)1   不等于 0  显示 1  
if(123 & 64)1   等于   0  显示 0  
if(123 & 32)1   不等于 0  显示 1  
if(123 & 32)1   等于   0  显示 0  
if(123 & 16)1   不等于 0  显示 1 
if(123 & 16)1   等于   0  显示 0 
if(123 & 8)1    不等于 0  显示 1 
if(123 & 8)1    等于   0  显示 0 
if(123 & 4)1    不等于 0  显示 1 
if(123 & 4)1    等于   0  显示 0 
if(123 & 2)1    不等于 0  显示 1 
if(123 & 2)1    等于   0  显示 0 
if(123 & 1)0    不等于 0  显示 1 
if(123 & 1)0    等于   0  显示 0 if(123 & 128) != 0  Console.Write("1 "); 这句正确的怎么解释?
=========================================================================感谢 priwilliam 帮我解释&是二进制按位“与”运算               val                 t 
            1111011            10000000           &->   0 
            1111011            01000000           &->   1 
            1111011            00100000           &->   1 
            1111011            00010000           &->   1 
            1111011            00001000           &->   1 
            1111011            00000100           &->   0 
            1111011            00000010           &->   1 
            1111011            00000001           &->   1
[Quote=最后的结果为:] 01111011 [/Quote=] 没老师我理解起来非常的累!if(123 & 128)1    
if(123 & 128)1  
if(123 & 64)1   
if(123 & 64)1    
if(123 & 32)1   
if(123 & 32)1    
if(123 & 16)1  
if(123 & 16)1    
if(123 & 8)1     
if(123 & 8)1    
if(123 & 4)1     
if(123 & 4)1    
if(123 & 2)1    
if(123 & 2)1     
if(123 & 1)0    
if(123 & 1)0    为什么变这个了?    val                 t  
1111011            10000000           &->   0  
1111011            01000000           &->   1  
1111011            00100000           &->   1  
1111011            00010000           &->   1  
1111011            00001000           &->   1  
1111011            00000100           &->   0  
1111011            00000010           &->   1  
1111011            00000001           &->   1 大家不好意思,我的问题非常的初级
可以帮忙解释详细点不?非常感谢
非常非常感谢

解决方案 »

  1.   

    if(123 & 128) != 0  Console.Write("1 ");  这句正确的怎么解释? -----------------------
    别人不是已经解释了吗?二进制与运算,如果结果不为0,输出1            1111011            10000000           &->   0 左边是123的二进制表示,右边是128,逐位对齐,二者皆1,输出才为1,否则输出0。
    其他类推。
      

  2.   

    原来是这样呀1111011   = 123
    10000000  = 1281111011
    00000100
    &->   0  
    唯一的一个数字和一样的话就显示 0 但是我想问问为什么128 是 10000000为什么123 是 1111011这个是什么计算的?
      

  3.   

    byte val;
    val = 123;
    Console.WriteLine(Convert.ToString(val,2));
    用笔算比较累 您可以用以上方法得到二进制的值 :)
      

  4.   

    tostring可以转二进制,八进制,十进制,这样你会好多的