0

我基本上是计算机科学的初学者。如果我问基本问题,请原谅我。我想了解基数排序。我读到一个 32 位无符号整数可以分解为 4 个 8 位块。之后,只需要“4遍”即可完成基数排序。有人可以给我看一个例子,说明这个分解(32 位到 4 个 8 位块)是如何工作的?也许,一个 32 位整数,如 2147507648。

谢谢!

4

2 回答 2

2

您可以将 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

于 2013-10-15T08:22:28.363 回答
1

它的完成如下:

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

为此,您需要按照 nos 的建议进行按位运算。

于 2013-10-15T08:22:10.567 回答