I'm getting an infinite loop. I want to print from MSB to LSB. I'm not sure why its stuck...

It outputs it correctly as: 0000 0000 0000 0000 0000 0000 0101 1010 (for base-10 of 90), but then repeats, why?Code:#include <climits> #include <iostream> using namespace std; template<typename t> //Q: how do I print it from MSB to LSB void print_bits(const t& type) { unsigned int mask; size_t num_bits = sizeof(t) * CHAR_BIT; size_t width = 0; for ( size_t i = (num_bits - 1); i >= 0; --i ) { mask = type & ( 1 << i);//turn off all bits except cur bit if ( !mask )//=> if 0(base-10) it means cur bit is 0 (when cur bit is AND 1)where we turn off all bits, then output '0' cout << mask; else cout << 1;//b/c if it's non-zero in base-2, then output binary 1 if ( width % 4 == 3 ) cout << " ";//to separate into 4bit chunks for readability ++width; } cout << endl; } int main() { unsigned int garage = 90; cout << "Status of each garage..." << endl; print_bits(garage); return 0; }