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 大家不好意思,我的问题非常的初级
可以帮忙解释详细点不?非常感谢
非常非常感谢
别人不是已经解释了吗?二进制与运算,如果结果不为0,输出1 1111011 10000000 &-> 0 左边是123的二进制表示,右边是128,逐位对齐,二者皆1,输出才为1,否则输出0。
其他类推。
10000000 = 1281111011
00000100
&-> 0
唯一的一个数字和一样的话就显示 0 但是我想问问为什么128 是 10000000为什么123 是 1111011这个是什么计算的?
val = 123;
Console.WriteLine(Convert.ToString(val,2));用笔算比较累 您可以用以上方法得到二进制的值 :)