[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...

namespace bitcount
  public bitcount
     private uint BitCounter(uint u)
        uint uCount;
        uCount = u - ((u >> 1) & 033333333333) - ((u >> 2) & 011111111111);
        return (uCount + (uCount >> 3) & 030707070707 % 63;

     public static void Main
       bitcount bc = new bitcount();
       uint number;
       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 mailing list