Подтвердить что ты не робот

Зачем использовать 0xffff более 65535

Я видел некоторый PHP script, который использует 0xffff в mt_rand(0, 0xffff). Я делаю echo 0xffff; и результат 65535. Есть ли смысл использовать этот 0xffff? А также что это?

4b9b3361

Ответ 1

Шестнадцатеричная нотация 0xffff дает понять, что все биты в числе 1. 65535 - это то же самое число, но двоичное представление не так очевидно. Это только номер счета. Таким образом, этот способ записи чисел имеет другую семантику.

Например, если вы хотите объявить, что максимальное значение некоторой переменной должно быть 65535, тогда лучше указать следующее:

$max_value = 65535;

Потому что это позволяет людям сравнивать его с другими значениями, такими как 65500 (< $max_value) или 66000 (> $max_value).

Наоборот, для полей бит.

$default_state = 65535;

Это не говорит мне, что все биты являются единичными (на самом деле они есть).

$default_state = 0xFFFF;

Это означает: каждая шестнадцатеричная цифра обозначает четыре бита, а F означает четыре 1 бит. Поэтому 0xffff есть 0b1111111111111111 в двоичном формате.

Шестнадцатеричная нотация используется, когда программист хочет дать понять, что двоичное представление имеет важное значение, возможно, более важное, чем точное числовое значение.

Ответ 2

Если ваш код выполняет двоичные манипуляции, использование шестнадцатеричных значений, подобных этому, намного легче понять в контексте по сравнению с десятичным; хотя я бы не рассматривал mt_rand как один из этих контекстов (особенно, поскольку нижняя граница десятичная и это только верхняя граница, которая имеет шестнадцатеричный в вашем примере)

Ответ 3

Это всего лишь шестнадцатеричная нотация для 65535. Нет важного различия между ними в контексте, который вы предоставили, но легче запомнить "0, x и четыре символа f", чем 65535.

Ответ 4

0xffff - шестнадцатеричное число. 0x только говорит вам, что значение после 0x является шестнадцатеричным. Шестнадцатеричный код содержит 16 цифр от 0 до 9 и от a до f.

Чтобы вычислить десятичное значение шестнадцатеричного числа, вы должны умножить значение цифр на 16 до степени разряда в числе.

Пример:

ffff = (15*16^3) + (15*16^2) + (15*16^1) + (15*16^0) = 65535

f имеет значение 15 и это место 0 1 2 и 3 числа.

34a6 = (3*16^3) + (4*16^2) + (10*16^1) + (6*16^0) = 13478

Надеюсь, что это может помочь