Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

William Tabata

So falar o q precisa fazer ;D

Recommended Posts

O que acontece com o código dele André é que quando alcança o limite do inteiro de 32bits no PHP, existe um overflow.

 

De forma simplista, o código dele fica girando em um loop infinito.

 

;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

André, tudo bem ?

 

Faça um teste, verifique o tamanho máximo do tipo INTEGER do seu PHP:

 

echo 'Tamanho Inicial: ' . PHP_INT_SIZE;
echo '<br>';
echo 'Tamanho Max: ' . PHP_INT_MAX;
echo '<br>';

Mais informações em http://php.net/manual/pt_BR/language.types.integer.php

 

Faça o teste do script que eu sugeri com valores menores, que não alcancem o limite máximo do seu PHP.

 

Está ficando cada vez mais interessante este tópico.

 

abs a todos que estão colaborando.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Galera, fiz um script para compreender melhor o que faz o operador ^ no PHP, visto algumas dúvidas do pessoal.

 

<?php

/**
 * @author Ricardo Mendes - eng.rmendes@gmail.com  
 * @copyright 2010
 * 
 * @example mostraXor(2,58);
 */

function mostraXor($a, $B)
    {
    //Configuracoes para mostrar o texto formatado    
    $maior = max(array($a, $B));
    $tamanho = strlen(decbin($maior));
       
    echo '<pre>';
        //Informa a operacao que sera feita
        echo 'Operação: ' . $a . ' ^ ' . $b . '<br />'; 
        echo str_pad(decbin($a), $tamanho, '0', STR_PAD_LEFT) . ' = ' . $a . ' em binário<br />';
        echo str_pad(decbin($B), $tamanho, '0', STR_PAD_LEFT) . ' = ' . $b . ' em binário<br />'; 
        //efetua a conta       
        $c = $a ^ $b;
        echo '----<br />';  
        //Mostra o resultado    
        echo str_pad(decbin($c), $tamanho, '0', STR_PAD_LEFT) . ' = ' . $c;
    echo '</pre>';
    
    }

//Exemplos
mostraXor(9,12); // retorna 5
mostraXor(5,7); // retorna 2
mostraXor(8,15); // retorna 7
mostraXor(2,58); // retorna 56


?>

PS. Quando eu salvo o script aqui no forum, ele transforma a variavel "b" de entrada em maiúsculo, não sei porque.

O correto é que ela seja em minúsculo!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faça o teste do script que eu sugeri com valores menores, que não alcancem o limite máximo do seu PHP.

Mas esse não é o desafio proposto pelo João. O desafio é justamente usar valores que passem do limite da minha maquina, no caso 32-bits.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faça o teste do script que eu sugeri com valores menores, que não alcancem o limite máximo do seu PHP.

Mas esse não é o desafio proposto pelo João. O desafio é justamente usar valores que passem do limite da minha maquina, no caso 32-bits.

 

Exatamente,

 

O desafio é lidar com o overflow, só isso, nunca existiu nada relacionado com OU exclusivo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.