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>