Pouze tento týden sleva až 80 % na e-learning týkající se C# .NET. Zároveň využij akci až 30 % zdarma při nákupu e-learningu - Více informací.
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í.
discount 30 + hiring

Operace s binárními čísly PHP

Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!

<?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í!