[Mono-dev] Oddity in C#
Paul F. Johnson
paul at all-the-johnsons.co.uk
Thu Jun 28 07:37:44 EDT 2007
Got a bit of a strange one which I'm not sure about. Below is a bit of code
I'm playing with...
private uint BitCounter(uint u)
uCount = u - ((u >> 1) & 033333333333) - ((u >> 2) & 011111111111);
return (uCount + (uCount >> 3) & 030707070707 % 63;
public static void Main
bitcount bc = new bitcount();
Console.WriteLine("Please enter a number ");
number = Console.Read();
number = BitCounter(number);
Okay, it won't compile (Read is static int for a start), but the oddest piece
of the puzzle is that the uint variables cause problems when I try to compile
(casting). If I change everything to long, the value returned is incorrect (if
you re-write this in C or C++ and enter 85, it returns 2, in C# it returns 33).
Any clues as to why this behaviour is seen? It makes no difference if I target
mono or VS.NET.
Get your free @ukpost.com account now
More information about the Mono-devel-list