package main import ( "fmt" ) func main() { assert(0b0, 0b0) assert(0b1, 0b1) assert(0b10, 0b10) assert(0b11, 0b10) assert(0b00101000, 0b00100000) assert( 0b1000000000101010101, 0b1000000000000000000, ) } // MSB Calculates Most Significant Bit of x func MSB(x uint32) uint32 { x = x | x>>1 x = x | x>>2 x = x | x>>4 x = x | x>>8 x = x | x>>16 x += 1 x = x >> 1 return x } func assert(in, expect uint32) { got := MSB(in) result := func() string { switch { case got == expect: return "OK" default: return "FAILED" } }() fmt.Printf("%q: expect %b, got %b for input: %b\n", result, expect, got, in) }