Logarithm keys

Reader Bernie submits for our approval this wonderful C# log base 2 implementation. He says: “We can distinguish two halves in that code. It looks like it was originally written for an unsigned 16-bit int, and later on extended for signed 32-bit integers.”

This code reminds me of the change-sorting machine I have in my closet, which sorts change based on weight. That thing has no error handling if you try to sort, say, a huge boulder through it; it'd just fall apart. At least here, we have the assurance that the universe's biggest numbers all have a log base 2 of 31.

public static int Log2(int x)
                {
                        if (x <= 65536)=""                        ="" {=""                                ="" if="" (x=""><= 256)=""                                ="" {=""                                        ="" if="" (x=""><= 16)=""                                        ="" {=""                                                ="" if="" (x=""><= 4)=""                                                ="" {=""                                                        ="" if="" (x=""><= 2)=""                                                        ="" {=""                                                                ="" if="" (x=""><= 1)=""                                                                        ="" return="" 0;=""                                                                ="" return="" 1;=""                                                        ="" }=""  =""                                                        ="" return="" 2;=""                                                ="" }=""  =""                                                ="" if="" (x=""><= 8)=""                                                        ="" return="" 3;=""                                                ="" return="" 4;=""                                        ="" }=""  =""                                        ="" if="" (x=""><= 64)=""                                        ="" {=""                                                ="" if="" (x=""><= 32)=""                                                        ="" return="" 5;=""                                                ="" return="" 6;=""                                        ="" }=""  =""                                        ="" if="" (x=""><= 128)=""                                                ="" return="" 7;=""                                        ="" return="" 8;=""                                ="" }=""  =""                                ="" if="" (x=""><= 4096)=""                                ="" {=""                                        ="" if="" (x=""><= 1024)=""                                        ="" {=""                                                ="" if="" (x=""><= 512)=""                                                        ="" return="" 9;=""                                                ="" return="" 10;=""                                        ="" }=""  =""                                        ="" if="" (x=""><= 2048)=""                                                ="" return="" 11;=""                                        ="" return="" 12;=""                                ="" }=""  =""                                ="" if="" (x=""><= 16384)=""                                ="" {=""                                        ="" if="" (x=""><= 8192)=""                                                ="" return="" 13;=""                                        ="" return="" 14;=""                                ="" }=""  =""                                ="" if="" (x=""><= 32768)=""                                        ="" return="" 15;=""                                ="" return="" 16;=""                        ="" }=""  =""                        ="" if="" (x=""><= 16777216)=""                        ="" {=""                                ="" if="" (x=""><= 1048576)=""                                ="" {=""                                        ="" if="" (x=""><= 262144)=""                                        ="" {=""                                                ="" if="" (x=""><= 131072)=""                                                        ="" return="" 17;=""                                                ="" return="" 18;=""                                        ="" }=""  =""                                        ="" if="" (x=""><= 524288)=""                                                ="" return="" 19;=""                                        ="" return="" 20;=""                                ="" }=""  =""                                ="" if="" (x=""><= 4194304)=""                                ="" {=""                                        ="" if="" (x=""><= 2097152)=""                                                ="" return="" 21;=""                                        ="" return="" 22;=""                                ="" }=""  =""                                ="" if="" (x=""><= 8388608)=""                                        ="" return="" 23;=""                                ="" return="" 24;=""                        ="" }=""  =""                        ="" if="" (x=""><= 268435456)=""                        ="" {=""                                ="" if="" (x=""><= 67108864)=""                                ="" {=""                                        ="" if="" (x=""><= 33554432)=""                                                ="" return="" 25;=""                                        ="" return="" 26;=""                                ="" }=""  =""                                ="" if="" (x=""><= 134217728)=""                                        ="" return="" 27;=""                                ="" return="" 28;=""                        ="" }=""  =""                        ="" if="" (x=""><= 1073741824)=""                        ="" {=""                                ="" if="" (x=""><= 536870912)=""                                        ="" return="" 29;=""                                ="" return="" 30;=""                        ="" }=""  =""                        ="" return="" 31;=""                ="" }="">
[Advertisement] Release! is a light card game about software and the people who make it. Play with 2-5 people, or up to 10 with two copies - only $9.95 shipped!