Marcelo, 

        Para não se enrolar nesta questão vc precisa prestar atenção ao
básico sobre sistemas de numeração posicionais (SNPs). O que
chamamos de números (em qualquer SNP) são, na verdade,
representações abreviadas de polinômios de potências da base do
SNP. 

        Todos os SNPs são equivalentes, e os algoritmos da aritmética são
equivalentes para todos (é um exercício interessante tentar escrever
os algoritmos generalizados da soma, subtração, multiplicação e
divisão de números inteiros para qualquer SNP). Então tanto faz
realizar sua operação em hexadecimal, decimal ou binário, porque
todos os resultados que vc vai encontrar são diferentes
representações para o mesmo valor. 

        No caso particular que vc levantou, a representação do resultado
da divisão é -3 (hexadecimal e decimal) ou -11 (binário). 

        Agora, uma coisa completamente diferente é vc se preocupar com a
forma de representação física de números binários em algum
sistema de computação (como, por exemplo, um computador eletrônico
digital). Aí vc começa a se preocupar com coisas como: qual o SNP
usado na representação interna (geralmente binário)? Quantos
dígitos (bits) eu disponho para representar meus números? Qual a
convenção de representação de números positivos e negativos? 

        Repare que tipicamente os números inteiros formam o que chamamos um
tipo de dado primitivo (representável e operável diretamente pelas
instruções de máquina do processador), enquanto que os números
reais, por exemplo, só podem ser representados como estruturas de
dados primitivos (ver, por exemplo, o padrão de representação IEEE
754). 

        Vc fez uma mistura com dois tipos diferentes de representações
binárias de números naturais: 
    *representação em módulo-sinal: bit mais significativo usado
para representar o sinal (geralmente a convenção é 0 = sinal
positivo, 1 = sinal negativo) e os n - 1 bits restantes são usados
para representar o módulo (valor absoluto) do número. Neste caso,
se temos N bits disponíveis para representar números, a faixa de
valores representável é -2^n < x < 2^n (simétrica).
    *representação em complemento de 2: todos os bits são usados
na representação, sendo que os valores negativos são representados
pelo complemento de 2 (expresso com N bits) do valor absoluto do
número. Adota-se a convenção que, caso o bit mais significativo
seja 1, então o número representado é negativo, caso contrário
ele é positivo. Esta convenção torna a faixa de valores
representável, com os N bits disponíveis, igual a -1-2^n < x < 2^n
(assimétrica).
        Vale a pena uma olhada nos artigos da wikipedia sobre formatos de
representação de números com sinal [1] e representação no
formato complemento de dois [2]. 

        [ ]'s 

        J. R. Smolka
 ON SEX 27/03/09 14:45 , MARCELO RODRIGUES ge...@ibest.com.br SENT: 
Olá pessoal...estou me vendo em papos de aranha tentando resolver
uma questão que envolve a divisão de binários. Se alguém tiver
aquele tempinho, por favor me dê uma mãozinha, ok ?   Aí vai : X =
-(75)16 (menos 75 na base 16 que é hexadecimal)  e  Y= (27)16 (27 na
base 16 - hexadecimal)   Fiz o seguinte:   1-Converti para base 10 os
dois valores e resultaram em:  X= -117  e Y= 39    2-Passei ambos para
binários (base 2) de 8 bits onde o primeiro número representa o
sinal ou seja se for 0 é positivo ou se for 1 é negativo: ficaram
assim: Y=(00100111) na base 2 e achei o equivalente a 117 (positivo)
na base 2 que dá: (01110101) na base 2.    3-Então o -117 será o
complemento a 2 deste positivo. Para encontrá-lo, uma maneira bem
prática é caminhar no número da direita para esquerda mantendo os
zeros até encontrar o primeiro 1. Então mantemos este 1 e a partir
do próximo dígito trocamos: quando for ZERO escrevemos 1 e quando
for 1 escrevemos ZERO. Então o complemento a 2 do 117 na base será
o -117 que em base 2 escrevemos: (10001011) na base 2.   4-Agora vem
a dúvida a questão pede: X / Y (divisão inteira) - Já tentei
fazer por subtrações sucessivas e não consegui...alguém poderia
dar uma sugestão ?

Responder a