Why does the right shift behave as follows?
let a: UInt = 0x6177206d, b: UInt = 0x9e3779b1
let m: UInt = a * b
print("""
let m = \(String(format:"%x", a)) * \(String(format:"%x", b)) = \(String(format:"%x", m))
m>>4=\(String(format:"%x", m >> 4))
m>>8=\(String(format:"%x", m >> 8))
m>>16=\(String(format:"%x", m >> 16))
m>>32=\(String(format:"%x", m >> 32))
""")
Produces:
let m = 6177206d * 9e3779b1 = ef1bf05d m>>4=fef1bf05 m>>8=efef1bf0 m>>16=a4efef1b m>>32=3c3ca4ef