2 Duvidas [RESOLVIDO]

1. 2 Duvidas [RESOLVIDO]

Bruna Almeida
FennFelis

(usa Ubuntu)

Enviado em 14/04/2012 - 15:49h

Olá pessoal
Tenho 2 duvidas, as duas são relacionadas com bits e binarios
Estou fazendo um trabalho que simula um interpretador MIPS

1º - Na função andi $t, $s, imm, o imm = imediato, pode assumir valores com sinais, eu desloco os bits certinho se o imediato for positivo, com os negativos eu desloco da seguinte maneira, isso se eu desloca-se os bits de 0 a 15:
codigo |= imm & 0x0000FFFF

Minha duvida é como eu faria para deslocar os bits 6 a 10?

2ª - Tem como fazer comparação de bits?
Tenho um codigo que guarda o seguinte valor
0000 00ss ssst tttt dddd d000 0010 0100

Como faço para saber que os bits 0 a 5 sao '10 0100'?


  


2. Re: 2 Duvidas [RESOLVIDO]

Bruno Rogério Fernandes
brunorf

(usa Arch Linux)

Enviado em 25/04/2012 - 17:56h

1ª pergunta:

Na função andi $t, $s, imm, o imm = imediato, pode assumir valores com sinais, eu desloco os bits certinho se o imediato for positivo, com os negativos eu desloco da seguinte maneira, isso se eu desloca-se os bits de 0 a 15:

codigo |= imm & 0x0000FFFF

Minha duvida é como eu faria para deslocar os bits 6 a 10?



Você pode usar o operador de deslocamento de bits:


//faz um deslocamento de 6 bits para a direita
imm = imm >> 6;

//agora, pode fazer o resto normal
codigo |= imm & 0x0000001F

Obs.: Você perderá os valores dos bits de 0 a 5



2ª pergunta:

Tem como fazer comparação de bits?
Tenho um codigo que guarda o seguinte valor

0000 00ss ssst tttt dddd d000 0010 0100


Suponha que você tenha a variável codigo com o valor acima, então basta você fazer:


//Obs: 0x00000A10 == 00000000 0010 0100b
if (codigo & 0x00000A10 == 0x00000A10)
{
...
}



3. Re: 2 Duvidas [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 29/04/2012 - 22:45h

[code] if (!(valor^0x0a)) ... [code]

Esse "^" dentro dos pares de parêntesis é chamado de "XOR", ou "OU EXCLUSIVO".

No caso se "valor" for exatamente igual a "0x0a", a expressão retorna zero e o operador "!" faz o "if" entender como verdadeiro.

Apenas outra forma.


4. Re: 2 Duvidas [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 29/04/2012 - 22:49h

if (!(valor^0x0a)) ... <div class="brush: bash; gutter: false; toolbar: false; class-name: forumCode;" id="forumCodeDiv" iscode="true">

Esse "^" dentro dos pares de parêntesis é chamado de "XOR", ou "OU EXCLUSIVO".

No caso se "valor" for exatamente igual a "0x0a", a expressão retorna zero e o operador "!" faz o "if" entender como verdadeiro.

Apenas outra forma.


</div>

<div class="direita"><a href="javascript:editar(380597)"><img src="http://img.vivaolinux.com.br/comunidades/imagens/edit_ico1.png" alt="Editar" title="Editar" height="18" width="18" align="absmiddle" border="0"></a> <a href="javascript:if(confirm('Tem certeza que deseja deletar este post?')) { window.location.href='/comunidades/excluirPost.php?codigo=13&codpost=380597&codtopico=93686'; }"><img src="http://img.vivaolinux.com.br/comunidades/imagens/del_ico1.png" alt="Apagar" title="Apagar" height="18" width="18" align="absmiddle" border="0"></a></div>


====

OFF:

Houston, we have a problem...

Aqui deu este "tilt" e estou registrando caso seja importante mais tarde.

Foi apenas na minha resposta.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts