(PHP 4, PHP 5, PHP 7, PHP 8)
bindec — İkilikten onluğa
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.
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.
Bağımsız değişken bir dize olmalıdır. Başka veri türleri kullanmak beklenmedik sonuçlara yol açacaktır.
ikilik_dize değerinin onluk karşılığı.
| 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. |
Ö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
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.