将Radid Sort的32位整数分解为8位卡盘

时间:2013-10-15 08:17:01

标签: radix-sort

我基本上是计算机科学的初学者。如果我提出基本问题,请原谅我。我想了解基数排序。我读到32位无符号整数可以分解成4个8位块。之后,只需“4次通过”即可完成基数排序。有人可以告诉我一个例子,说明这个故障(32位到4个8位块)是如何工作的吗?也许,像3247507648这样的32位整数。

谢谢!

2 个答案:

答案 0 :(得分:1)

完成如下:

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

要做到这一点,你需要bitwise operations作为nos建议。

答案 1 :(得分:1)

您可以将32位整数除以4个8位。提取这些部分是使用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十进制是0x80005DC0十六进制。你十分注意十六进制表示中的那些8位,因为每个十六进制数字代表4位,其中两个和两个代表8位。

所以现在意味着块1是0xC0,块2是0x5D,块3是0x00,块4是0x80