bindec

(PHP 4, PHP 5, PHP 7, PHP 8)

bindecİkilikten onluğa

Açıklama

bindec(string $ikilik_dize): int|float

ikilik_dize bağımsız değişkeniyle temsil edilen ikilik sayının onluk eşdeğerini döndürür.

bindec(), bir ikilik sayıyı int'e veya, boyut nedeniyle gerekirse float'a dönüştürür.

bindec(), tüm ikilik_dize değerlerini işaretsiz tamsayı olarak yorumlar. Bunun nedeni, bindec()'in en anlamlı biti işaret biti olarak değil, bir büyüklük basamağı olarak görmesidir.

Bağımsız Değişkenler

ikilik_dize

Dönüştürülecek ikilik dize. ikilik_dize içindeki geçersiz karakterler sessizce yok sayılır. PHP 7.4.0'dan itibaren geçersiz karakter aktarmak artık önerilmemektedir.

Uyarı

Bağımsız değişken bir dize olmalıdır. Başka veri türleri kullanmak beklenmedik sonuçlara yol açacaktır.

Dönen Değerler

ikilik_dize değerinin onluk karşılığı.

Sürüm Bilgisi

Sürüm: Açıklama
7.4.0 Geçersiz karakter aktarmak artık bir önerilmiyor bildirimi üretir. Sonuç, geçersiz karakterler yokmuş gibi hesaplanmaya devam eder.

Örnekler

Örnek 1 bindec() örneği

<?php
echo bindec('110011') . "\n";
echo
bindec('000110011') . "\n";

echo
bindec('111');
?>

Yukarıdaki örneğin çıktısı:

51
51
7

Örnek 2 bindec() girdiyi işaretsiz tamsayı olarak yorumlar

<?php
/*
* Bu örneğin asıl dersi, PHP kodunun kendisinde değil,
* çıktısındadır.
*/

$buyukluk_alt = pow(2, (PHP_INT_SIZE * 8) - 2);
p($buyukluk_alt - 1);
p($buyukluk_alt, 'Taşmayı görüyor musunuz? Bir sonraki turda da izleyin...');

p(PHP_INT_MAX, 'PHP_INT_MAX');
p(~PHP_INT_MAX, 'PHP_INT_MAX değerinden bir fazlası olarak yorumlanır');

if (
PHP_INT_SIZE == 4) {
$not = 'en büyük işaretsiz tamsayı olarak yorumlanır';
} else {
$not = 'en büyük işaretsiz tamsayı olarak yorumlanır
(18446744073709551615) ancak float hassasiyeti tarafından çarpıtılır'
;
}
p(-1, $not);


function
p($girdi, $not = '') {
echo
"girdi: $girdi\n";

$bicim = '%0' . (PHP_INT_SIZE * 8) . 'b';
$ikilik = sprintf($bicim, $girdi);
echo
"ikilik: $ikilik\n";

ini_set('precision', 20); // 64 bit makinelerde okunabilirlik için.
$onluk = bindec($ikilik);
echo
'bindec(): ' . $onluk . "\n";

if (
$not) {
echo
"NOT: $not\n";
}

echo
"\n";
}
?>

Yukarıdaki örneğin 32 bitlik makinelerdeki çıktısı:

girdi:        1073741823
ikilik:       00111111111111111111111111111111
bindec():     1073741823

girdi:        1073741824
ikilik:       01000000000000000000000000000000
bindec():     1073741824
NOT:          Taşmayı görüyor musunuz? Bir sonraki turda da izleyin...

girdi:        2147483647
ikilik:       01111111111111111111111111111111
bindec():     2147483647
NOT:          PHP_INT_MAX

girdi:        -2147483648
ikilik:       10000000000000000000000000000000
bindec():     2147483648
NOT:          PHP_INT_MAX değerinden bir fazlası olarak yorumlanır

girdi:        -1
ikilik:       11111111111111111111111111111111
bindec():     4294967295
NOT:          en büyük işaretsiz tamsayı olarak yorumlanır

Yukarıdaki örneğin 64 bitlik makinelerdeki çıktısı:

girdi:        4611686018427387903
ikilik:       0011111111111111111111111111111111111111111111111111111111111111
bindec():     4611686018427387903

girdi:        4611686018427387904
ikilik:       0100000000000000000000000000000000000000000000000000000000000000
bindec():     4611686018427387904
NOT:          Taşmayı görüyor musunuz? Bir sonraki turda da izleyin...

girdi:        9223372036854775807
ikilik:       0111111111111111111111111111111111111111111111111111111111111111
bindec():     9223372036854775807
NOT:          PHP_INT_MAX

girdi:        -9223372036854775808
ikilik:       1000000000000000000000000000000000000000000000000000000000000000
bindec():     9223372036854775808
NOT:          PHP_INT_MAX değerinden bir fazlası olarak yorumlanır

girdi:        -1
ikilik:       1111111111111111111111111111111111111111111111111111111111111111
bindec():     18446744073709551616
NOT:          en büyük işaretsiz tamsayı olarak yorumlanır
              (18446744073709551615) ancak float hassasiyeti tarafından çarpıtılır

Notlar

Bilginize:

Bu işlev, platformun int türüne sığamayacak kadar büyük sayıları dönüştürebilir; bu durumda daha büyük değerler float olarak döndürülür.

Ayrıca Bakınız