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).

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

num2

Объект GMP, целое число (int) или числовая строка (string).

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

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

Расстояние Хэмминга между 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() - Побитовое исключающее ИЛИ

add a note add a note

User Contributed Notes 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