Operadores Bitwise – Matemática Lógica Aula 1 de 2

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

Operadores Bitwise – Matemática Lógica Aula 1 de 2

Mensagem por GameMakerTutoriais em Qui 17 Nov 2011, 03:46

Vou postar novamente os dois tutoriais sobre operadores bitwise porque tinham se perdido com o backup do fórum. blz


Cartão perfurado

Lógica e Operadores de bits - Parte 1 de 2

Autor: bl8086 (Brendan LS)

Nessa matéria que fizemos, vamos adentrar um pouco mais na manipulação binária de dados na memória. Esse tutorial vai ser importante não só para quem está freqüentando as aulas de Assembly do fórum, mas o conceito e a lógica a ser passada aqui valem também para qualquer linguagem de programação (C++, Pascal, etc), pois implica o uso da matemática lógica, a base fundamental para qualquer cálculo feito pelo computador (o que nós vamos entender agora). Ele está dividido em duas partes, uma para o conceito e uma para o uso na linguagem.

Não vamos focar nas ramificações da lógica, como o uso de tabelas verdade ou fazer comparações entre tautologias, contingências e outras chatices que deixam o conceito básico longe do que realmente é! Aqui vamos priorizar somente os elementos essenciais para realizar cálculos que utilizam operadores bitwise, os operadores para bits! Todavia, poderemos ter um tópico mais completo sobre matemática lógica aqui mesmo no nosso fórum de matemática. Enfim, vamos começar!

Nós já aprendemos que o coração do nosso computador, a Unidade Central de Processamento (CPU), só “entende” a linguagem de máquina, ou seja, códigos binários. E é através de zeros ( 0 ) e uns ( 1 ) que ele pode realizar todo tipo de cálculo matemático, seja ele simples ou complexo, visto que qualquer operação aritmética pode ser feita por simples adição e subtração.

Um conceito simples a ser introduzido agora é que um bit jamais poderá ser 0 e 1 ao mesmo tempo. Ou ele é absoluto 0 ou ele é absoluto 1, e a implicação dos cálculos de lógica parte dessa premissa básica de que um bit pode ser verdadeiro ( 1 ) ou falso ( 0 ). Isso pode parecer simples (e de fato é), mas saiba que talvez tenha sido essa (a implicação de cálculos pela lógica) uma das mais importantes descobertas para o avanço da humanidade!


Aristóteles

Rege a história que, foi na antiga Grécia, com Aristóteles, que começou o estudo mais aprofundado da matemática lógica. Mas naquela época, a implicação partia de situações corriqueiras no dia a dia das pessoas, e como qualquer criança sabe, julgar um fato por ser verdadeiro ou falso é muito simples a partir do momento que se tem um fato verdadeiro como pressuposto! Vamos ver um exemplo:

Afirmação: Carlos é alto.
Afirmação: Carlos não é gentil.

Se você sabe que Carlos é alto, então Carlos não é baixo e não pode ser alto e baixo ao mesmo tempo. Também nos foi afirmado que ele não é gentil. Dessa forma, as afirmações a seguir são obviamente falsas:

Falso: Carlos é baixo.
Falso: Carlos é alto e baixo.
Falso: Carlos não é alto.
Falso: Carlos é gentil.

Porém, pela lógica, também poderíamos apenas idealizar alguma qualidade de Carlos, sem afirmá-la de fato, como vamos ver nas frases abaixo. Veja que a segunda frase faz uso da outra qualidade de Carlos, sugerindo que ele seja alto ou gentil, mas nunca os dois casos ao mesmo tempo. Isso é muito importante em implicação lógica, e durante os cálculos (que vamos aprender a seguir) é essencial ter muita atenção.

Vamos rever as afirmações verdadeiras:

Afirmação: Carlos é alto.
Afirmação: Carlos não é gentil.

Agora, as suposições:

Suposição ou argumento: Carlos é alto ou baixo. (Verdadeiro!)
Suposição ou argumento: Ou Carlos é alto ou Carlos é gentil. (Verdadeiro!)
Suposição ou argumento: Carlos não é alto e é gentil. (Falso!)
Suposição ou argumento: Mas SE Carlos não é alto então ele é gentil. (Verdadeiro!)
Suposição ou argumento: Ou Carlos não é gentil ou Carlos é baixo. (Verdadeiro!)

Tudo bem, mas e quanto à capacidade do computador em realizar cálculos usando apenas comparações simples como essas? Vejamos...


Gottfried Leibniz

Há mais de três séculos, um matemático chamado Gottfried Leibniz idealizou o sistema de lógica para o que então seria o precursor do sistema binário que conhecemos hoje, porém, tão simples quanto 0s e 1s, Leibniz usava apenas F (falso) ou V (verdade). Você provavelmente acharia que foi George Boole (“idealizador” da álgebra boolenada), mas isso nos remete primeiro às escolas aristotélicas e só depois ao Leibniz. O que George Boole fez foi idealizar essa álgebra para o processamento de cálculos realizados por máquinas (controladas por cartões perfurados), e isso foi por volta de 1850. Enfim...

Nota: Se quiser saber mais, só por curiosidade, achei uma página interessante quando estava procurando essa foto do cartão: http://www.prof2000.pt/users/harry/Anos%2040-50.htm

Quando apareceram os primeiros computadores com microprocessador (muitos anos depois), os projetistas pensaram em criá-lo em termo de circuitos lógicos usando novamente o conceito de lógica matemática. Os cálculos feitos por esses circuitos só são possíveis porque combinações de micro-transistores podem realizar essas operações com voltagens “ligado” ( 1 ) ou desligado ( 0 )!

Por isso existem três operações fundamentais, que podem ser feitas com bits:
E ( AND )
OU ( OR )
NÃO ( NOT )

Quando usamos esses operadores estamos usando a implicação lógica que vimos no exemplo das qualidades de Carlos. Uma boa dica para concurso agora, vamos traduzir as frases que usamos em bits (0 ou 1):

Carlos não é baixo.
Nós sabemos que ele é alto, então essa afirmação sinaliza 1 bit pois é verdadeira, e está negando o valor contrário ao que é verdade.

Carlos não é alto e é gentil.
Nós sabemos que ele não é gentil então afirmar isso como verdade é falso ( 0 ). Se ele é 0 e 0 então essa afirmação sinaliza 0 bit.

Carlos é alto ou baixo.
Carlos pode ser 1 ou 0? Sim! Portanto essa afirmação é verdade ( 1 ), e sinaliza 1 bit.

Todo os cálculos feitos pelo processador seguem à essa regra simples e lógica! E é dessa forma tão simples que são feitos os mais complicados cálculos científicos propostos pela ciência. Quando usamos o operador E (AND), ele retornará 1 bit sempre que os dois bits comparados forem 1. Quando se usa o operador OU (OR), ele retorna 1 bit sempre que pelos menos um dos dois bits comparados for 1. E quando usamos a negação NÂO (NOT) estamos invertendo o valor do bit. O que é 0 se tornará 1, e vice-versa.

Essa foi a primeira parte da nossa aula sobre operadores binários, na verdade foi uma introdução para que possamos entender o conceito do uso. O próximo tutorial também será parte das aulas do nosso fórum de Assembly, então, na medida em que eu for criando o material, vou colocando os links de um para outro. Abraços!

GameMakerTutoriais

Número de Mensagens : 800
Data de inscrição : 29/01/2011
Reputação : 26
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Operadores Bitwise – Matemática Lógica Aula 1 de 2

Mensagem por Lauro em Sex 03 Fev 2012, 17:33

Hehe, algumas suposições ou afirmações são tão confusas que umas vezes tiver de repensar se Carlos é gentil ou não, se é alto ou não. Interessante cara, Ninguém nunca pensou que com o silogismo categórico (filosofia) poderíamos criar até super-máquinas avançadas! Mas, se pensar bem, nosso cérebro usa esse cálculo todos os dias, mesmo que pareça não usar.
Eu gosto de aulas assim, sem usar gml, assembly, código, programa, nem nada, tudo na base da lógica (ou silogismo categórico, também conta xD)
Té mais, continue criando tópicos assim flw

Lauro

Ranking : Nota D
Número de Mensagens : 854
Idade : 19
Data de inscrição : 09/11/2010
Notas recebidas : C+D
Reputação : 11
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://www.google.com

Voltar ao Topo Ir em baixo

Re: Operadores Bitwise – Matemática Lógica Aula 1 de 2

Mensagem por GameMakerTutoriais em Sex 03 Fev 2012, 22:16

Valeu! Obrigado pelo comentário! Eu também gosto mais de escrever sobre teoria do que colocar códigos... Se a pessoa fixar bem a teoria, transpor o conhecimento pra linguagem não é tão difícil (independente da linguagem). Falou!

GameMakerTutoriais

Número de Mensagens : 800
Data de inscrição : 29/01/2011
Reputação : 26
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Operadores Bitwise – Matemática Lógica Aula 1 de 2

Mensagem por Conteúdo patrocinado Hoje à(s) 13:26


Conteúdo patrocinado


Voltar ao Topo Ir em baixo

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo

- Tópicos similares

 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum