Вы можете использовать следующие
rightDigits = number % 2704 // 52 squared
leftDigits = number / 2704
Я знаю, что вы можете разделить число «два-два» пополам:
halfintR = some32bitint & 0xFFFF
halfintL = some32bitint >> 16
можете ли вы сделать то же самое для целого числа, которое ограничено немощностью двух пространств?
(скажем, что вы хотите, чтобы ваш диапазон ограничивался набором целых чисел, которые будут вписываться в 4-значное базовое пространство 52 без знака)
Как только вы поймете, что >>
и modulo
используются для вычисления division
и division
вычисления, вы можете написать то, что хотите:
lower = some4DigitsNumberBase52 % (52 * 52)
upper = some4DigitaNumberBase52 / (52 * 52)
Это основа для расчета базы. Вы также можете вывести решение из алгоритма, который отображает число в определенной базе: как вы выберете самые правые две цифры и две крайние левые цифры.