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