За последние 24 часа нас посетили 16375 программистов и 1677 роботов. Сейчас ищут 899 программистов ...

Функция конвертации из Dec в Bin

Тема в разделе "PHP для новичков", создана пользователем rudenkov, 11 окт 2011.

  1. rudenkov

    rudenkov Активный пользователь

    С нами с:
    9 окт 2011
    Сообщения:
    20
    Симпатии:
    0
    Адрес:
    Minsk
    Нужно было написать функцию, которая конвертирует числа из десятичной системы счисления в двоичную. При этом запрещено использовать встроенные функции php. Пользоваться можно лишь математическими операциями. Как можно улучшить дополнить или сократить код, интересно послушать замечания.

    PHP:
    1. <?php
    2.     function dec2bin($n){
    3.         $s = "$n";
    4.         $bin = '';
    5.         $k = 0;
    6.         $finbin = '';
    7.         while($n>0){ // Конвертируем число в двоичную систему
    8.             $n = $n / 2;
    9.             $s = "$n";
    10.             $i = 0;
    11.             while($s{$i} != NULL) // Вычисляем длинну строки частного от деления на 2
    12.                 ++$i;
    13.             if($s{$i-1} == 5 and $s{$i-2} == '.' ){ // Проверяем есть ли остаток от деления
    14.                 $bin = $bin.'1';
    15.                 $n = $n - 0.5;
    16.             }
    17.             else
    18.                 $bin = $bin.'0';
    19.             ++$k; //  Считаем сколько раз выполнился цикл, тем самым вычисляем длинну двочиного числа
    20.         }
    21.         while($k>0){ // Записываем двоичное  число в обратном порядке
    22.             $finbin = $finbin.$bin{$k-1};
    23.             --$k;
    24.         }
    25.         $finbin = $finbin + 0; // Конвертируем строку в число
    26.         return $finbin;
    27.     }
    28.     echo dec2bin(32); // Вернет 100000
    29. ?>
     
  2. krow7

    krow7 Активный пользователь

    С нами с:
    12 авг 2009
    Сообщения:
    398
    Симпатии:
    0
    Адрес:
    из Азии
    rudenkov
    писали бы вы уже в одну тему ;)
     
  3. rudenkov

    rudenkov Активный пользователь

    С нами с:
    9 окт 2011
    Сообщения:
    20
    Симпатии:
    0
    Адрес:
    Minsk
    Логично ) В следующий раз так и сделаю )