sexta-feira, 19 de janeiro de 2018

Só é possível armazenar números nas variáveis

Você sabia que as variáveis só armazenam numeros? Sim e ainda só numeros inteiros (não fracionados) e não negativos!
Pois é, até as variáveis com tipos String ou char, que aparentemente guardam letra e texto.
Isso tem uma razão bem simples. Os dados das variáveis são armazenados na memória, que é composto por bytes que é um conjunto de bits. Cada byte representa um numero decimal de 0 a 255. Ou seja cada byte pode conter um numero inteiro e não negativo.
E o que é uma string? Uma string é apenas um conjunto de bytes.
E as letras? É o seguinte, por convenção cada letra e simbolo tem uma representação decimal, por exemplo a letra A maiusculo é representada pelo número 65 e o a minuzculo por 97.
A palavra AMOR realmente é isso: 65,77,79,82

Você pode ver mais de como um byte é armazenado na memória nesse link
http://alberiolima.blogspot.com/2018/01/como-os-dados-sao-armazenados-na-memoria.html

Como os dados são armazenados na memória

Antes vamos ao conceito de bit e byte
bit é menor unidade computacional, ela representa um estado de energização, com energia, ou sem energia! O que podemos padronizar com 1 e 0. Isso é algo que só permite dois estados, ou está 0 ou está 1.
O byte é o conjunto de 8 bits, isso é uma padronização, um byte poderia ter outro tamanho, mas esse foi o valor padronizado! E é suficiênte para seu propósito!
Então um bite pode ser 0 ou 1, e um byte pode ser de 00000000 a 11111111, então em um byte podemos ter 256 combinações diferentes, que seria 2^8 (dois elevado a 8).  Para ficar melhor intendivel para nós, convertemos de um numero binário de base 2, para um numero decimal, que estamos mais familiarizados, e é um padrão do mundo inteiro.
Cada combinação binária em um byte,  representa um numero decimal.
por exemplo: 00000001 é equivalente ao numero 1, 00000010 ao numero 2, 00000011 ao numero 3.

Então bit é a menor unidade e o byte é a unidade básica! Uma letra ou qualquer simbolo ocupa 1byte na memória.

E a memória?
É um conjunto de bytes, vamos pensar em um byte como uma caixinha, e essa caixinha tem 8 divisões, como aquelas gavetas de meias, cada divisão é um bit, e ele pode ou não estar presente, ou seja, quando o espaço estiver vazio podemos dizer que o bit está 0, e quando e espaço estiver preenchido o bit está 1. E isso pode ser modificado a qualquer momento pelo programa! Na realidade o bit em estado 0 é a falta de energia, está desenergizado, e quando está 1 está energizado. Pois é um aparelho elétrico, e usa energia elétrica em todos o seu funcionamento.

Caixinha com 8 bits, alguns em estado 1.
+-------------+   
| |X|X|X|   
+-------------+   

Cada caixinha, tem um  endereço e guarda um byte (8bits), se percisar guardar uma informação maior, por exemplo de 16bits, precisará de 2bytes (2 caixinhas), e se precisar guardar 32bits precisará de 4bytes. Se precisar armazenar a palavra amor, precisará de 5 bytes.

+-------------+
|0|0|0|0|0|0|0| Caixa de 8 bits vazia, valor 0
+-------------+

+-------------+
|1|1|1|1|1|1|1| Caixa de 8 bits cheia, valor 255
+-------------+

Como obter o valor da caixinha (byte):

cada bite representa um valor de base binária, já que só acaita dois valores, 0 e 1, sem energia e com energia.

Da direita para a esquerda <-----
( o simbolo ^ representa potência, um numero elevado a um valor)
2^0 =   1 (bit0)
2^1 =   2 (bit1)
2^2 =   4 (bit2)
2^3 =   8 (bit3)
2^4 =  16 (bit4)
2^5 =  32 (bit5)
2^6 =  64 (bit6)
2^7 = 128 (bit7)

Como pode perceber,o numero 0 ocupa a caixa inteira com nada dentro, mas ocupa, é um numero válido, tem um valor definido! 

Como converter o valor binario do byte em um valor decimal, que é o formato universal que usamos no dia a dia. 
Se o bite0 estiver ativo, então vai 1
Se o bite1 estiver ativo, vale 2
Se o bite2 estiver ativo, vale 4

Então um numero 00000111, equivale a soma de 1 + 2 +4, que é 7
00000000 é igual a 0
11111111 é igual a 255
E é assim que um unico byte pode guardar um valor de 0 a 255

Barquino de controle remoto

Tutorial da construção e teste de um barquinho bi-motor de controle remoto http://www.informacional.com.br/p/barquinho-bi-motor-com-cont...