Minha ideia é sobre diminuir o armazenamento de bits…
se pegar um número , como o 3666, e somar +1 e dividir por 3, ou somar +2 e dividir por 3, ou somente dividir por 3,
e ir dividindo com um desses três ate chegar ao numero 1. exemplo 3666 dá isso 32322231.
Onde a parte 3 = (é somente dividir por 3.) a parte 2 =( é . somar +2 e dividir por 3) e a parte 1.=( é somar +1 e dividir por 3 ).
e representar 32322231 onde o numero 3=(-), o número 2=(1) , o número (1)=0 formando esse número de grupo de bits = -1-111-0
8bits onde o (-) e a separação dos bits. eu ouvi falar que podemos salvar os bits separados onde cada separação conta como um bit por isso 8 bits
. e pode fazer o inverso para recuperar o numero .
fica mais fácil para o computador entender e fica rápido o calculo .eu acho , mas duvida perguntem se tiver errado eu me equivoquei ,.peço desculpas. obs. eu não sei programar
Minha ideia é sobre escrever, de uma forma que diminua o espaço armazenado, um numero na forma de bits separados. exemplo 3666, eu posso escreve-lo: -1-111-0 e posso restaurar o valor original sem perda. eu fiquei sabendo que podemos salvar valores de grupos de bits (bits separados ) isso é verdade… isso faz sentido @staroski, ainda esta ruim de entender se tiver você diz para eu tentar melhorar o texto
Sim você pode, mas qual é o equipamento que utiliza uma base numérica ternária atualmente?
No processador e nas memórias você vai continuar manipulando bytes (grupos de 8 bits).
Em princípio essa base só iria “compactar” a representação textual, nesse caso acho mais vantagem continuar com o sistema hexadecimal, que utiliza 16 algarismos (0 à 9 e a à f) ao invés de somente 3 algarismos (-, 1 e 0), nesse caso 3666 é representado como e52, que é bem menor que -1-111-0.
Outra questão importante, os equipamentos utilizam base binária pois a informação eletrônica se resume basicamente à 2 estados possíveis: ligado ou desligado.
Como é que você iria resolver isso eletronicamente com sua arquitetura?
Na base binária, se um pino possui tensão, o bit é 1, se não possui tensão, é 0, no seu caso, como iria representar as 3 informações distintas: -, 1 e 0?
é por que eu tinha pensado em outro, mas postei esse, mas vamos lá. salva os o numero 11110 que corresponde -1-111-0 só os números binários que deve ser 31 e o numero da separação em bits 11001 que é -,-, , ,- vamos diser que é 32 total 1024 de 3666
faz sentido
essa é de outra ideia , é de outro em que eu somo 1+1 ao valor e divido por 4 ou +1+3 ao valor e divido por 4 ou +3 ao valor e divido por 4 ou +1 ao valor e divido por 4 e um desses da um valor exato. to do numero menos o 1 é divisível por um desses … faz sentido.
eu acho que sim , mas vai aumentando as posibilidade ex o 2x se somar 1 eao resultado e dividir por 2 da um numero exato ou somente dividir por 2 , já 3x e 4x e como eu disse . eu acho
Já foi explicado acima que essa representação tem 3 valores possíveis: 0, 1 e hífen. Então não dá pra usar 1 bit pra cada, vai precisar de mais, portanto no total vai ocupar mais que 1 byte.
E de que adianta essa suposta economia de espaço se precisa fazer tantos cálculos? E ainda não ficou claro qual a regra geral. Como ficaria a codificação para qualquer número? Seriam exatamente os mesmos cálculos?
tive outra ideia pega um valor de bites que quer diminuir mas tem que ser bits par exemplo 1011011 0100010 transforma eles o primeiro bite é o sinal de menos ou mais o segundo 3ou 1 faz o calculo inverso como no exemplo gera 3666 -1,3,-1,-1,1,-3,-1 pra fazer o inverso inverte a carreira . para chegar ao resultado multiplica por 4 subtrai -1-1 vou fazer o exemplo detalhado -1 , multiplica por 4 subtrai -1-1 pega o resultado que é 2 multiplica por 4 ai subtrai -1 -3 que da 4 pega o resultado multiplica por 4 e subtrai por -1 que da 15 pega o resultado multiplica por 4 e subtrai -1-1 que da 588 pega o resultado multiplica por 4 e subrai -1-1 que da 230 pega o resultado multiplica por 4 e subtari -3 que da 917 pega o resultado multiplica por 4 e subrai -1 chegou a 3666 esse é o valor menor que 16384 que é o valor dos bits inicial @hugokotsubo@staroski o termo geral acho que da para perceber no calculo. me desculpe se não entender . tenho dificuldade de me expressar.
Por que multiplica por 4? De onde vem esse monte de -1, 1 e 3? Aliás, de onde vieram esses cálculos? Isso tudo me parece arbitrário e aleatório, sem propósito algum.
Mas vamos supor que faça sentido (não faz, mas vamos só supor). Mesmo assim, não adianta só guardar o 3666, vc precisa também guardar os passos (ou sei lá como vc chama essa sequência de -1, 1 e 3), pra poder voltar ao valor original. No fim vai acabar ocupando mais espaço.
Vale lembrar também que muitas linguagens costumam usar tamanhos fixos para os tipos numéricos, então na prática, para a maioria dos casos, 3666 e 16384 ocupam a mesma quantidade de bytes.
Na verdade, eu não entendi nem mesmo qual é o problema que vc está tentando resolver…
não precisa guardar os é só fazer o inverso. -1 1 3-3 é os passos. exemplo -1 diz no valor que tem é para somar +1+1 ao valor e dividir por 4. são três passos . pra ver se ele da exato, se der, marca -1 como no exemplo marca -1
[quote=“rafaellvb, post:14, topic:429824”]
-1,3,-1,-1,1,-3,-1
[/quote] esse seria o valor resgatado do 3666 que da
[quote=“rafaellvb, post:14, topic:429824”]
1011011 0100010 transforma eles o primeiro bite é o sinal de menos ou mais o segundo 3ou 1
[/quote] me diz o que você não ta entendendo para eu tentar explicar
Não vi relação nenhuma entre 1011011 0100010 e -1,3,-1,-1,1,-3,-1.
Mas não importa, vamos ao que interessa…
O resultado final é o que? Se for 1011011 0100010, são 14 bits. Mas se for guardar esse valor na memória ou gravar (em um arquivo ou banco de dados, por exemplo), então a menor unidade de armazenamento é o byte. Portanto, pra salvar esses 14 bits vai ter que usar 2 bytes.
Se o resultado final é 3666, em binário é 111001010010, que olha só, também ocupa 2 bytes.
Os mesmos 2 bytes que vc gastaria se simplesmente guardasse o próprio 16384, pois em binário ele é 100000000000000.
Ou seja, além de não economizar espaço, vc ainda adicionou uma complexidade desnecessária com esses cálculos malucos.
pra gerar esses numero é só pegar o 3666 1 etapa soma +1+1 ao 3666 e divide por 4 ( que é representado por (-1)) vai dar um numero exato que é 917 . pega esse 917 soma +3 e divide por 4 ( esse é representado por (3)) e da um numero exato 230 . pega o 230 soma +1+1e divide por 4( que é representado por (-1) como você pode ver na sequencia e vai procurando os números exatos desde que seja -1,1-3,-3 ((-1) é soma +1+1 ao valor x e divide por 4) (( 1) +1 ao valor x e divide por 4) ((3)
é soma +3 ao valor x e divide por 4) e ((-3) é soma +1+3 ao valor x e divide por 4)
os bis vai pelo sinal de mais ou menos(-, ,-,-, ,-,-) que dá 1011011 de -1,3,-1,-1,1,-3,-1 ou por 1 ou 3
de dá 0100010 que junto dá isso 1011011 0100010 para pegar o valor inverso também é fácil inverte a carrira -1,-3,1,-1,-1,3,-1