给定以下代码,它会将整数中的所有位打印出来:
private string getBitLiteral(bool bitVal)
{
if (bitVal)
{
return ("1");
}
else
{
return ("0");
}
}
Int64 intThisHand = 127;
for (int i = 64; i > 0; i--)
{
HttpContext.Current.Response.Write(
getBitLiteral((intThisHand & (1 << i)) != 0)
);
}
为什么会打印出这个结果:
1000000000000000000000000011111110000000000000000000000000111111
首先,我是否正确地循环,预计最后7位数字为1。
其次,为什么中间会有一些1?我期望它们都是0,除了结尾的7个1。
((intThisHand >> i) & 1) != 0
。因为intThisHand已经是一个64位整数,所以移位操作将被正确执行。 - Michael Madsen