Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Pouze tento týden sleva až 80 % na e-learning týkající se Pythonu. Zároveň využij slevovou akci až 30 % zdarma při nákupu e-learningu - Více informací.
discount 30 + hiring

Operace s binárními čísly PHP

<?php


class Binary
{

    public function prepareNumber($num, $length)
    {
        for ($i = $length - 1; $i >= 0; $i--)
        {
            $result[$i] = 0;
        }

        for ($i = strlen($num) - 1; $i >= 0; $i--)
        {
            $result[$i] = $num[$i];
        }

        return implode('', $result);
    }


    public function sum($num1, $num2, $length = 8)
    {
        for ($i = $length - 1; $i >= 0; $i--)
        {
            $result[$i] = 0;
        }

        for ($i = $length - 1; $i >= 0; $i--)
        {
            $result[$i] = $num1[$i] + $num2[$i] + $result[$i];

            if ($result[$i] > 1)
            {
                $result[$i] = $result[$i] == 2 ? 0 : 1;
                $result[$i-1] = 1;
            }
        }

        return $result;
    }


    public function sub($num1, $num2, $length = 8)
    {
        return $this->sum($num1, $this->negate($num2));
    }




    public function negate($num)
    {
        $length = strlen($num) - 1;
        for ($i = $length; $i >= 0; $i--)
            $num[$i] = $num[$i] == 1 ? 0 : 1;

        return implode('', $this->sum($num, $this->prepareNumber('1', $length + 1)));
    }

    public function check($num1, $num2)
    {
        $num1 = intval($num1);
        $num2 = intval($num2);
        if ($num1 > $num2)
            return -1;
        else if ($num1 < $num)
            return 1;
        else
            return 0;
    }


}

$bin = new Binary();


$input_1 = $bin->prepareNumber('11', 8);
$input_2 = $bin->prepareNumber('1', 8);

$number = $bin->sum($input_1, $input_2);

for ($i = 0; $i < sizeof($number); $i++)
{
    echo($number[$i]);
}

echo('<p>');

$number = $bin->sub($input_1, $input_2);

for ($i = 0; $i < sizeof($number); $i++)
{
    echo($number[$i]);
}

echo('<p>');

echo($bin->check($input_1, $input_2));

?>
Program byl vytvořen v roce 2012.

 

Všechny články v sekci
Zdrojákoviště - Knihovny v PHP
Program pro vás napsal David Čápka
Avatar
Uživatelské hodnocení:
Ještě nikdo nehodnotil, buď první!
David je zakladatelem ITnetwork a programování se profesionálně věnuje 13 let. Má rád Nirvanu, sushi a svobodu podnikání.
Unicorn university David se informační technologie naučil na Unicorn University - prestižní soukromé vysoké škole IT a ekonomie.
Aktivity

 

 

Komentáře

Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zatím nikdo nevložil komentář - buď první!