bindec
(PHP 4, PHP 5, PHP 7, PHP 8)
bindec — İkilikten onluğa
Açıklama
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ığı.
Örnekler
Örnek 1 bindec() örneği
<?php
echo bindec('110011') . "\n";
echo bindec('000110011') . "\n";
echo bindec('111');
?>
Yukarıdaki örneğin çıktısı:
Ö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.