2013-10-15 4 views
0

Я в основном новичок в области компьютерных наук. Пожалуйста, простите меня, если я задам элементарные вопросы. Я пытаюсь понять сортировку radix. Я читал, что 32-разрядное целое без знака можно разбить на 4 8-битных фрагмента. После этого все, что требуется, - «4 прохода», чтобы завершить сортировку радикса. Может кто-нибудь, пожалуйста, покажите мне пример того, как работает этот пробой (32 бит в 4 8-битных куска)? Возможно, 32-битное целое число, например 2147507648.Разбиение 32-битного целого числа на 8-битные патроны для Radix Sort

Спасибо!

+0

Какой язык? – Kimvais

+0

Java хорош, но я просто пытался понять математику за этим преобразованием. Я просто хотел увидеть эти 4 цифры (для 32-битного целого числа выше), которые используются для сортировки radix. Благодаря! –

+0

Большое спасибо Dukeling !! Прекрасный пример! –

ответ

1

Это делается следующим образом:

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

Чтобы сделать это, вам нужно bitwise operations, как предложил NOS.

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, chunk3 является 0x00 и кусок 4 0х80

+0

Благодаря вам, а также носу! –