xxxxxxxxxx
using Images, FileIO
Conversão de Bases Numéricas
Símbolos que temos habitualmente para representar números:
0, 1, 2, 3, 4, 5, 6, 7, 8, 9
Quando acabam os símbolos, nós os juntamos: 10, 11, 12, 13...
Esta é a base DECIMAL - dez símbolos
Binário
Temos 2 símbolos: 0 e 1
BIT - Binary digIT - 'dígito' de valor 0 ou 1
0, 1, 10, 11, 100, 101, 110, 111, 1000, 1001, 1010
Existem 10 tipos de pessoas no mundo: as que sabem binário e as que não.
BYTE - conjunto de 8 bits
00000000, 00000001, 00000010...
Endereço I.P
142.250.78.206
4 BYTES - 32 Bits
00000000 . 00000000 . 00000000 . 00000000 números de 0 a 255 (256 valores) =
Representação de Cores
RGB - Vermelho (Red), Verde (Green), Azul (Blue)
0-255, 0-255, 0-255, [opcionalmente: alfa - 0 - 255]
Hexadecimal (base 16)
16 símbolos
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F
10, 11, 12, ..., 1A, 1B, ...
Binario: 00011101
Hexadecimal: 1D
Decimal: 29
true
xxxxxxxxxx
# na própria base decimal
begin
12854 == 4 + 50 + 800 + 2000 + 10000
end
Convertendo 00011101 de binário para decimal
em decimal = 29
Convertendo de decimal para outra base
Primeiro, dividimos o número na base 10 pela base desejada; em seguida dividimos o quociente desta primeira divisão novamente pela base desejada. Enquanto o quociente for maior ou igual à base, realizamos novas divisões.
Quando não for mais possível dividir o quociente pela base, podemos escrever o número na nova base tomando como algarismos o último quociente e todos os restos de trás para frente: o último quociente será o primeiro algarismo e primeiro resto será o último algarismo.
para_decimal (generic function with 1 method)
xxxxxxxxxx
# converter de outra base para decimal
# function para_decimal(n, base)
# expoente = 0
# digitos = digits(parse(Int, n, base = base))
# decimal = 0
# for d in digitos
# decimal = decimal + d * base^expoente
# expoente = expoente + 1
# end
# decimal
# end
para_decimal(n, base) = parse(Int, n, base = base)
1380378
xxxxxxxxxx
para_decimal("15101A", 16)
substituir (generic function with 1 method)
xxxxxxxxxx
function substituir(n)
extras = ["A", "B", "C","D", "E", "F"]
n < 10 ? "$n" : extras[n-9]
end
de_decimal (generic function with 1 method)
xxxxxxxxxx
function de_decimal(n, base)
# quociente
q = n
numero = ""
while q ≥ base
# resto
r = q % base
numero = substituir(r) * numero
q = q ÷ base
end
substituir(q) * numero
end
"D5FFF"
xxxxxxxxxx
de_decimal(876543, 16)
xxxxxxxxxx
vermelho html"<input type='range' min='0' max='255'>"
xxxxxxxxxx
verde html"<input type='range' min='0' max='255'>"
xxxxxxxxxx
azul html"<input type='range' min='0' max='255'>"
RGB:
Decimal (78, 121, 255)
HEX #4E 79 FF
xxxxxxxxxx
begin
r = vermelho/255
g = verde/255
b = azul/255
RGB(r, g, b)
end