PHP 8.4.2 Released!

gmp_hamdist

(PHP 4 >= 4.0.4, PHP 5, PHP 7, PHP 8)

gmp_hamdistРасстояние Хэмминга

Описание

gmp_hamdist(GMP|int|string $num1, GMP|int|string $num2): int

Возвращает расстояние Хэмминга для чисел num1 и num2. Оба операнда должны быть неотрицательными.

Список параметров

num1

Объект GMP, целое число (int) или строка (string), которая интерпретируется как число по той же логике как если бы строка использовалась в функции gmp_init() с автоматическим определением основания системы счисления — когда значение параметра base равно 0.

Должно быть неотрицательным.

num2

Объект GMP, целое число (int) или строка (string), которая интерпретируется как число по той же логике как если бы строка использовалась в функции gmp_init() с автоматическим определением основания системы счисления — когда значение параметра base равно 0.

Должно быть неотрицательным.

Возвращаемые значения

Расстояние Хэмминга между num1 и num2 в виде целого числа (int).

Примеры

Пример #1 Пример использования gmp_hamdist()

<?php
$ham1
= gmp_init("1001010011", 2);
$ham2 = gmp_init("1011111100", 2);
echo
gmp_hamdist($ham1, $ham2) . "\n";

/* расстояние Хэмминга эквивалентно: */
echo gmp_popcount(gmp_xor($ham1, $ham2)) . "\n";
?>

Результат выполнения приведённого примера:

6
6

Смотрите также

  • gmp_popcount() - Количество единиц в двоичной записи числа
  • gmp_xor() - Побитовое исключающее ИЛИ

Добавить

Примечания пользователей 2 notes

up
4
Bas Vijfwinkel
6 years ago
For those without gmp support :

$hamming_distance = count(array_diff_assoc(str_split($string1), str_split($string2)));

And if you are not sure if your strings have equal length :

$hamming_distance = count(array_diff_assoc(str_split(str_pad($string1,strlen($string2)-strlen($string1),' ')), str_split(str_pad($string2,strlen($string1)-strlen($string2),' '))));
up
-1
grabzila at gmail dot com
3 years ago
<?php
$hamdist
= gmp_hamdist(-100, -10); // 4
$hamdist = gmp_hamdist(100, 10); // 5
?>

The function works great with negative numbers.
To Top