Не могу понять, что нужно написать в преставлении шестнадцатеричного числа.
int remaider = 0;
String hexadecimal = "";
while (decimalNumber != 0) {
remaider = decimalNumber % 16;
hexadecimal = HEX.charAt(remaider) + HEX; <---------------------
decimalNumber /= 16;
}
return hexadecimal;
}
Semyon Baryshnikov
30 уровень
Что такое представление шестнадцатеричного числа?
Обсуждается
Комментарии (7)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
wersiv
7 января, 16:16
ну тут методы и классы чо непонятно то
0
Cantrabandire
29 декабря 2025, 07:19
Хороший комментарий hidden #3303140, но не могу понять дальше всё в (10)
= 10 * 16² + 11 * 16¹ + 3 * 16⁰ = // именно почему 10*16 ( в степени 2)
= 10 * 256 + 11 * 16 + 3 * 1 =// а тут 11*16 ( в степени 1)
= 2560 + 176 + 3 =
= 2739
0
hidden #3303140
15 августа 2023, 08:04
Ну что такое шестнадцатеричная система счисления тебе понятно?
Это когда у тебя в записи числа может быть не десять разных цифр, как ты привык, а шестнадцать. То есть в 16ссч счёт по порядку выглядит так: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, a, b, c, d, e, f, 10, 11, ...
То есть запись "10"₍₁₆₎ - это число 16 в десятичной системе счисления.
Как перевести "10"₍₁₆₎ в десятичную систему счисления математически?
1₍₁₆₎ * 16₍₁₀₎¹ + 0₍₁₆₎ * 16₍₁₀₎⁰ = 1₍₁₀₎ * 16¹ + 0₍₁₀₎ * 16⁰ = 1 * 16 + 0 * 1 = 16 + 0 = 16₍₁₀₎.
Что это означает на практике?
Если в десятичной системе счисления цифра во втором разряде означает количество десятков в числе: 10 - это один десяток, 20 - это 2 * 10, два десятка, 30 - это 3 * 10, три десятка, то в шестнадцатерично системе счисления второй разряд будет означать количество "шестнашек" в числе, то есть:
10₍₁₆₎ = 1₍₁₆₎ * 16₍₁₀₎ = 1₍₁₀₎ * 16₍₁₀₎ = 16₍₁₀₎
20₍₁₆₎ = 2₍₁₆₎ * 16₍₁₀₎ = 2₍₁₀₎ * 16₍₁₀₎ = 32₍₁₀₎
...
f0₍₁₆₎ = f₍₁₆₎ * 16₍₁₀₎ = 15₍₁₀₎ * 16₍₁₀₎ = 240₍₁₀₎
Аналогично и с другими разрядами
Перевод (16) → (10)
А чему в десятичной системе будет равно, допустим, "ab3"₍₁₆₎?
Точно так же:
ab3₍₁₆₎ =
= a₍₁₆₎ * 16₍₁₀₎² + b₍₁₆₎ * 16₍₁₀₎¹ + 3₍₁₆₎ * 16₍₁₀₎⁰ =
дальше всё в (10)
= 10 * 16² + 11 * 16¹ + 3 * 16⁰ =
= 10 * 256 + 11 * 16 + 3 * 1 =
= 2560 + 176 + 3 =
= 2739
Перевод (10) → (16)
Теперь как проделать обратную операцию:
2739₍₁₀₎ = 171₍₁₀₎ * 16₍₁₀₎ + 3₍₁₀₎
То есть в число 2739 "влезает" 171 раз по 16, и остаток 3.
3₍₁₀₎ = 3₍₁₆₎, и эта цифра будет последним символом твоего шестнадатеричного представления числа 2739: ..3₍₁₆₎
Теперь что такое "171 раз по 16"? 171 = 10 * 16 + 11. То есть "171 раз по 16" означает "(10 * 16 + 11) раз по 16".
11₍₁₀₎ = b₍₁₆₎
А раз мы считаем "по 16", то цифру b надо записать во второй разряд с конца: ..b3.
Что осталось посчитать: ((10 раз по 16) по 16). "по 16 по 16", то есть 16², означает, что это будет третья цифра с конца, а 10₍₁₀₎ = a₍₁₆₎. Записываем "a" в третий с конца разряд: "ab3".
0
hidden #3303140
15 августа 2023, 09:24
Странно, что ты пишешь, что не понимаешь, что такое "шестнадцатеричное представление числа", если в соседнем вопросе ты же прекрасно понимаешь, что такое двоичное представление числа: https://javarush.com/help/90251
Я, значит, тут распинаюсь, а ты прекрасно знаешь алгоритм. И алгоритм перевода такой же, как и в вопросе по ссылке, только везде вместо 2 надо подставить 16. Из десятичной системы счисления перевод в любую другую будет точно таким же, остатки от деления числа на основание системы счисления записываешь последовательно справа налево.
0
Semyon Baryshnikov QA Automation Engineer
15 августа 2023, 11:00
Извиняюсь, но долго никто не отвечал и я додумался сам.
0
hidden #3303140
15 августа 2023, 12:16
Да ничё) решил обе задачи?
0
Semyon Baryshnikov QA Automation Engineer
15 августа 2023, 13:22
Да) с последней мучаюсь вот.
0