Question

I am basically a beginner in Computer Science. Please forgive me if I ask elementary questions. I am trying to understand radix sort. I read that a 32 bit unsigned integer can be broken down into 4 8-bit chunks. After that, all it takes is "4 passes" to complete the radix sort. Can somebody please show me an example for how this breakdown (32 bit into 4 8-bit chunks) works? Maybe, a 32-bit integer like 2147507648.

Thanks!

Was it helpful?

Solution 2

It's done as follows:

   2147507648
=> 0x80005DC0 (hex value of 2147507648)
=> 0x80 0x00 0x5D 0xC0
=> 128  0    93   192

To do this, you'd need bitwise operations as nos suggested.

OTHER TIPS

You would divide the 32 bit integer up in 4 pieces of 8 bits. Extracting those pieces is a matter of using using some of the operators available in C.:

uint32_t x = 2147507648;
uint8_t  chunk1 = x & 0x000000ff;          //lower 8 bits
uint8_t  chunk2 = (x & 0x0000ff00) >> 8; 
uint8_t  chunk3 = (x & 0x00ff0000) >> 16; 
uint8_t  chunk4 = (x & 0xff000000) >> 24;  //highest 8 bits

2147507648 decimal is 0x80005DC0 hex. You an pretty much eyeball those 8 bits out of the hex representation, since each hex digit represents 4 bits, two and two of them represents 8 bits.

So that now means chunk 1 is 0xC0, chunk 2 is 0x5D, chunk3 is 0x00 and chunk 4 is 0x80

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top