svn: /phpdoc/bg/trunk/reference/math/functions/ bindec.xml
[email protected] (Stanislav Yordanov) Mon, 04 Apr 2016 20:39:25 +0000
| Newsgroups | php.doc.bg |
|---|---|
| Message-ID | <[email protected]> |
stanprog Mon, 04 Apr 2016 20:39:25 +0000
Revision: http://svn.php.net/viewvc?view=revision&revision=338921
Log:
sync to EN
Changed paths:
U phpdoc/bg/trunk/reference/math/functions/bindec.xml
Modified: phpdoc/bg/trunk/reference/math/functions/bindec.xml
===================================================================
--- phpdoc/bg/trunk/reference/math/functions/bindec.xml 2016-04-04 20:20:43 UTC (rev 338920)
+++ phpdoc/bg/trunk/reference/math/functions/bindec.xml 2016-04-04 20:39:25 UTC (rev 338921)
@@ -1,6 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
-<!-- EN-Revision: n/a Maintainer: blum Status: ready -->
+<!-- EN-Revision: 334617 Maintainer: stanprog Status: ready -->
+<!-- CREDITS: blum -->
<refentry xml:id="function.bindec" xmlns="http://docbook.org/ns/docbook">
<refnamediv>
<refname>bindec</refname>
@@ -8,19 +9,25 @@
</refnamediv>
<refsect1 role="description">
&reftitle.description;
- <methodsynopsis>
- <type>number</type><methodname>bindec</methodname>
- <methodparam><type>string</type><parameter>binary_string</parameter></methodparam>
- </methodsynopsis>
+ <methodsynopsis>
+ <type>number</type><methodname>bindec</methodname>
+ <methodparam><type>string</type><parameter>binary_string</parameter></methodparam>
+ </methodsynopsis>
<para>
Връща десетичния еквивалент на двоичното число, представено чрез аргумента
<parameter>binary_string</parameter>.
</para>
<para>
- <function>bindec</function> преобразува двоично число в
- число от тип <type>integer</type> или,
- ако е необходимо във число от тип <type>float</type>.
+ <function>bindec</function> преобразува двоично число в число от тип
+ <type>integer</type> или, ако е необходимо поради размерността във <type>float</type>.
</para>
+ <para>
+ <function>bindec</function> интерпретира всички
+ <parameter>binary_string</parameter> стойности като беззнакови цели
+ числа. Това е така поради факта, че <function>bindec</function> възприема
+ старшия бит като още един порядък на величината,
+ а не като бит за знак.
+ </para>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
@@ -36,6 +43,12 @@
</varlistentry>
</variablelist>
</para>
+ <warning>
+ <para>
+ The parameter must be a string.
+ Using other data types will produce unexpected results.
+ </para>
+ </warning>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
@@ -43,31 +56,6 @@
Десетичната стойност на <parameter>binary_string</parameter>
</para>
</refsect1>
- <refsect1 role="changelog">
- &reftitle.changelog;
- <para>
- <informaltable>
- <tgroup cols="2">
- <thead>
- <row>
- <entry>&Version;</entry>
- <entry>&Description;</entry>
- </row>
- </thead>
- <tbody>
- <row>
- <entry>От версия 4.1.0</entry>
- <entry>
- Функцията вече може да преобразува числа, които са твърде големи за да
- се съберат в целочисления тип за съответната платформа. В този
- случай, се връщат като числа с плаваща запетая.
- </entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
- </para>
- </refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
@@ -93,7 +81,123 @@
</screen>
</example>
</para>
+ <para>
+ <example>
+ <title><function>bindec</function> интерпретира входа като беззнакови цели числа</title>
+ <programlisting role="php">
+<![CDATA[
+<?php
+/*
+ * Изводит от този пример е в изхода,
+ * а не в самия PHP код.
+ */
+
+$magnitude_lower = pow(2, (PHP_INT_SIZE * 8) - 2);
+p($magnitude_lower - 1);
+p($magnitude_lower, 'See the rollover? Watch it next time around...');
+
+p(PHP_INT_MAX, 'PHP_INT_MAX');
+p(~PHP_INT_MAX, 'interpreted to be one more than PHP_INT_MAX');
+
+if (PHP_INT_SIZE == 4) {
+ $note = 'interpreted to be the largest unsigned integer';
+} else {
+ $note = 'interpreted to be the largest unsigned integer
+ (18446744073709551615) but skewed by float precision';
+}
+p(-1, $note);
+
+
+function p($input, $note = '') {
+ echo "input: $input\n";
+
+ $format = '%0' . (PHP_INT_SIZE * 8) . 'b';
+ $bin = sprintf($format, $input);
+ echo "binary: $bin\n";
+
+ ini_set('precision', 20); // За надеждност на 64-битови системи.
+ $dec = bindec($bin);
+ echo 'bindec(): ' . $dec . "\n";
+
+ if ($note) {
+ echo "NOTE: $note\n";
+ }
+
+ echo "\n";
+}
+?>
+]]>
+ </programlisting>
+ &example.outputs.32bit;
+ <screen>
+<![CDATA[
+input: 1073741823
+binary: 00111111111111111111111111111111
+bindec(): 1073741823
+
+input: 1073741824
+binary: 01000000000000000000000000000000
+bindec(): 1073741824
+NOTE: See the rollover? Watch it next time around...
+
+input: 2147483647
+binary: 01111111111111111111111111111111
+bindec(): 2147483647
+NOTE: PHP_INT_MAX
+
+input: -2147483648
+binary: 10000000000000000000000000000000
+bindec(): 2147483648
+NOTE: interpreted to be one more than PHP_INT_MAX
+
+input: -1
+binary: 11111111111111111111111111111111
+bindec(): 4294967295
+NOTE: interpreted to be the largest unsigned integer
+]]>
+ </screen>
+ &example.outputs.64bit;
+ <screen>
+<![CDATA[
+input: 4611686018427387903
+binary: 0011111111111111111111111111111111111111111111111111111111111111
+bindec(): 4611686018427387903
+
+input: 4611686018427387904
+binary: 0100000000000000000000000000000000000000000000000000000000000000
+bindec(): 4611686018427387904
+NOTE: See the rollover? Watch it next time around...
+
+input: 9223372036854775807
+binary: 0111111111111111111111111111111111111111111111111111111111111111
+bindec(): 9223372036854775807
+NOTE: PHP_INT_MAX
+
+input: -9223372036854775808
+binary: 1000000000000000000000000000000000000000000000000000000000000000
+bindec(): 9223372036854775808
+NOTE: interpreted to be one more than PHP_INT_MAX
+
+input: -1
+binary: 1111111111111111111111111111111111111111111111111111111111111111
+bindec(): 18446744073709551616
+NOTE: interpreted to be the largest unsigned integer
+ (18446744073709551615) but skewed by float precision
+]]>
+ </screen>
+ </example>
+ </para>
</refsect1>
+ <refsect1 role="notes">
+ &reftitle.notes;
+ <note>
+ <para>
+ Тази функция може да преобразува числа, които са твърде големи за типа <type>integer</type>
+ на текущата платформа. В този случай големите стойности се връщат като
+ <type>float</type>.
+ </para>
+ </note>
+ </refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<para>