Logo Hardware.com.br
pulsar
pulsar Membro Senior Registrado
342 Mensagens 4 Curtidas

Binário, Octal e Hexadecimal

#1 Por pulsar 08/01/2004 - 16:25
Aê, tô precisando de um site que explique profundamente esses sistemas. Eu sei o básico, 3 dígitos em binário = 1 dígito em octal, dois dígitos em hexadecimal = 8 bits, logo 8 dígitos em binário, sei contar em binário e fazer conversões simples de cabeça. Mas eu preciso aprender mais a fundo tipo operações (de conversão também) e tal, o básico pelo menos.

Quem puder me dar umas dicas eu agradeço big_green.png
danpeig
danpeig Membro Junior Registrado
134 Mensagens 0 Curtidas
#2 Por danpeig
08/01/2004 - 16:44
Sempre me deparo com problemas nestas notações e nunca para pensar muito, sei o básico para fazer qualquer operação utilizo a calculadora mesmo (nada como converter para decimal e resolver tudo na hora). :lol:

Dei uma fuçada no Google e vi centenas de tutoriais sobre isso, um dos sites que encontrei foi:
http://www.tutorials4u.com/c/ascii.htm
Daniel Brooke Peig (www.brookepeig.com)
Linux User #81713
Equipe Fedora Linux Brasil - Precisamos de seu apoio ! (www.fedorabrasil.com.br)
jqueiroz
jqueiroz Cyber Highlander Registrado
104K Mensagens 5.7K Curtidas
#3 Por jqueiroz
08/01/2004 - 18:08
Conversão

tenta decorar as tabelas:

Decimal/Octal - Binário
0 / 0 - 000
1 / 1 - 001
2 / 2 - 010
3 / 3 - 011
4 / 4 - 100
5 / 5 - 101
6 / 6 - 110
7 / 7 - 111

Decimal - Hexa - Binário
00 / 0 - 0000
01 / 1 - 0001
02 / 2 - 0010
03 / 3 - 0011
04 / 4 - 0100
05 / 5 - 0101
06 / 6 - 0110
07 / 7 - 0111
08 / 0 - 1000
09 / 1 - 1001
10 / A - 1010
11 / B - 1011
12 / C - 1100
13 / D - 1101
14 / E- 1110
15 / F - 1111

Pra converter de decimal pra hexadecimal, você vai dividindo por 16. A cada divisão, o resto é o dígito convertido, o quociente, enquanto for maior que zero, guarda pra dividir denovo. Pega os restos de trás pra frente e monta o número.

Ex.: 1000 / 16 = 62, resto 8 (8)
62 / 16 = 3, resto 14 (E)
3 / 16 = 0, resto 3 (3)
1000 (Base10) == 3E8 (Base16). Ou, também, 0x3E8.

Passar de decimal pra binário: o jeito certo:
1. se for impar, coloque 1 no resultado; se for par, coloque 0 no resultado.
2. divida por 2 e repita o passo 1.
3. pegue os 0/1 do resultado na ordem inversa.

Porém às vezes é mais rápido converter pra hexadecimal e aplicar a tabelinha de cima.

Passar de decimal pra octal: o jeito certo:
1. divida o valor por 8; pegue o resto e guarde.
2. repita o passo 1 com o quociente enquanto este for maior que zero.

Normalmente é mais rápido converter pra hexa, de hexa pra binário, e reagrupar os bits de 3 em três, fazendo os dígitos octais.

Ex: 1000 -> 0x3E8 -> 0011/1110/1000 -> 001/111/011/000 -> 01730
"chmod 777 nunca ajudou ninguém" (c) 2002-2021 JQueiroz/FGdH
Conheça o Blog do Zekke
jqueiroz
jqueiroz Cyber Highlander Registrado
104K Mensagens 5.7K Curtidas
#4 Por jqueiroz
08/01/2004 - 18:38
Aritmética

- Números negativos (Complemento a 2)

Normalmente você começa a contar do zero. O truque pra fazer um número negativo é comaçar a contar antes do zero. Assim:

Digamos que você vai trabalhar com 4 bits. Assim dá pra contar de 0 a 15. O que a gente vai fazer é contar de -8 a 7. A contagem fica:
1000 -> -8
1001 -> -7
1010 -> -6
1011 -> -5
1100 -> -4
1101 -> -3
1110 -> -2
1111 -> -1
0000 -> 0
0001 -> 1
0010 -> 2
0011 -> 3
0100 -> 4
0101 -> 5
0110 -> 6
0111 -> 7

- Soma

Para somar dígitos binários, lembre-se das 3 regras: 0+0=0, 0+1=1, 1+1=0 e vai 1.

Assim, 7+5 (5bits) = 00111 + 00101

1 1 1
0 0 1 1 1 (7)
0 0 1 0 1 (5) +
----------
0 1 1 0 0 (12)


- Subtração

Você subtrai somando. Assim, 7 - 5 = 7 + (-5):

1 1 1 1 1 1 (vai 1?)
0 0 1 1 1 (7)
1 1 0 1 1 (-5) +
----------
0 0 0 1 0 (2)

Note que sobrou um "vai um" no final. Esse "vai um" é chamado de "carry" e é usado, entre outras coisas, pra saber se um número é maior que o outro.

- Multiplicação e Divisão

Existem algoritmos específicos pra multiplicar e dividir, e nem são tão complicados; são essencialmente os mesmos da mult/divisão decimal, só que quando vc bota o passo a passo em palavras fica enorme.

- Operações binárias: AND, OR, XOR, NOT

As operações binárias são feitas bit a bit e não geram carry. Lembre-se:
0 AND 0 = 0 - AND: igual a 1 se os dois forem iguais a 1.
0 AND 1 = 0
1 AND 0 = 0
1 AND 1 = 1

0 OR 0 = 0 - OR: igual a 1 se pelo menos um dos dois for igual a 1.
0 OR 1 = 1
1 OR 0 = 1
1 OR 1 = 1

NOT 0 = 1 - NOT: igual a 1 se o operando for igual a 0.
NOT 1 = 0

0 XOR 0 = 0 - XOR: igual a 1 se apenas um dos dois for igual a 1.
0 XOR 1 = 1
1 XOR 0 = 1
1 XOR 1 = 0

Assim, pra calcular o endereço de rede você faz um AND da máscara de sub-rede com o endereço IP, bit a bit:

200.222.170.32 AND 255.255.252.0 =
C8.DE.AA.20 AND FF.FF.FC.0 =
11001000.11011110.10101010.00100000 AND
11111111.11111111.11111100.00000000 =
11001000.11011110.10101000.00000000 = C8.DE.A8.00 = 200.222.168.0
"chmod 777 nunca ajudou ninguém" (c) 2002-2021 JQueiroz/FGdH
Conheça o Blog do Zekke
jqueiroz
jqueiroz Cyber Highlander Registrado
104K Mensagens 5.7K Curtidas
#6 Por jqueiroz
09/01/2004 - 12:18
pulsar
Putz cara, valeu, já rolou um copy/paste aqui para o meu vi

Tu cursa algo relacionado a computação. Na UERJ por ac...

Já terminei faz tempo...

Mas nos idos de 1985 tinha um livro chamado "Uma Introdução Ilustrada à Computação (com muito humor)" (Larry Gonick). Ele tinha tudo isso, e era um barato... bom, já são quase 20 anos, e o livro pode estar defasado em várias coisas, mas acho que vale uma olhada...
"chmod 777 nunca ajudou ninguém" (c) 2002-2021 JQueiroz/FGdH
Conheça o Blog do Zekke
© 1999-2024 Hardware.com.br. Todos os direitos reservados.
Imagem do Modal