Minha ideia de armazenamento. alguem interessa em fazer comigo, em parceria , mas detalhas, fale comigo

45 respostas
R

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

45 Respostas

staroski

Seria interessante corrigir os erros de português e explicar de forma mais clara o que você quer fazer.

R

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

staroski

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?

hugokotsubo

Desculpa se parecer rude, mas isso não faz o menor sentido.


Já existem várias formas de representar um número, dê uma olhada para ver se você se “inspira” a criar algo que pelo menos faça sentido…

R

é 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

R

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.

hugokotsubo

De onde vem esses números e cálculos? Qual a lógica por trás deles? É possível generalizar uma regra geral para qualquer número?

Da forma que está, me parece puramente aleatório e não faz sentido nenhum.

R

eu testei varias vezes , posso estar errado , mas deu certo em todas . testa ai

R

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

R

vocês sabe como escrever -1-111-0 ,números separados, diminuindo a memoria de armazenagem

hugokotsubo

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?

Desculpe, pra mim continua não fazendo sentido…

R

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.

hugokotsubo

Continua não fazendo sentido

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…

R

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

“rafaellvb:

-1,3,-1,-1,1,-3,-1
esse seria o valor resgatado do 3666 que da

“rafaellvb:

1011011 0100010 transforma eles o primeiro bite é o sinal de menos ou mais o segundo 3ou 1
me diz o que você não ta entendendo para eu tentar explicar

R

o valor 3666 é o valor diminuido de

“rafaellvb:

1011011 0100010
obrigado. pela atenção

hugokotsubo

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.

Entendeu pq não faz sentido?

R

valeu pela explicação sobre bytes no caso eu so consigo diminuir os bits né

para

12 bits né
você não entendeu a relação tentei explicar direito

quer. que eu tente explicar de novo pra você ,me ajudar, e dizer se faz sentido

R

vou tentar explicar de novo

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

R

esquece equivoco meu

R

me desculpe

staroski

Realmente não dá pra entender, a forma como você escreve é confusa, não tem pontuação, não dá pra entender a origem das operações.

Por que somar +1+1 e depois dividir por 4?

De onde surgiu essa fórmula?

Por que o 4 é representado por -1?

E novamente algo que você não esclareceu:
Tudo isso acarreta em fazer mais cálculos para ter uma representação numérica diferente de um valor.

Na prática você não vai economizar nada pois a arquitetura computacional continua operando somente em base binária.

Vai ter só um monte de processamento para fazer uma representação textual menor que a representação textual em binário, mas ainda assim muito maior que uma representação hexadecimal por exemplo.

Ou sua proposta é criar uma arquitetura nova que não utilize bits como sendo a menor unidade de informação?
Neste caso, o que você vai usar?

staroski

Com o seu método, o número 3666 seria representado como -1-111-0, certo?

Faz o seguinte:
Explica e exemplifica para nós como você vai armazenar esse valor -1-111-0 na memória ou em um registrador?

R

no caso eu cometi um equivoco, no lugar de somar era para subtrair no caso fica -1,-3,-3,-3 ,1 e sobra 3 ,que vai sobra entre 1 e 4, posso representar como números de base 4 no caso não sei se teria muita utilidade pensando direito. exemplo ele só faz contar 0 a 3 - 4- (1-4) ,00 a 33 (5-20) - 16 total 20 000-333 - 64-(21-84) total de tudo 84 esse método conta todas as variações e assim por diante , haaaa mas valeu , eu gosto de faz cálculos mesmo .kkkkkk isso serve para alguma coisa @staroski eu táva tentando representar por bits separados mas não da certo. posso salvar exemplo 300 1030 números com 0 na frente quantos bits leva

hugokotsubo

Cara, na boa, lá na primeira mensagem vc disse que não sabe programar, então… já parou pra pensar que talvez vc esteja equivocado e essa ideia não faz sentido? Vc pode achar que faz, mas se tivesse o mínimo de noção sobre programação (e computação em geral), perceberia que não faz.

Não vou me repetir, porque já está tudo explicado acima. Se não entendeu porque a ideia é sem nexo, sugiro que releia com calma. Se mesmo assim não entender, é porque precisa voltar alguns passos e estudar os conceitos básicos da computação (sem ironia).

Desculpe se estou parecendo rude, mas é que depois de todas as mensagens minhas e do @staroski explicando tudo (e não adiantando nada, pois vc insiste na ideia), não tem outro jeito de dizer que nada disso faz sentido.

R

ok mesmo assim valeu

staroski

Como você vai armazenar o 1030 num registrador, explica pra gente.

R

base 4 (-1,-3,-3,-3 ,1 sobra 3 ) da valores para -1,1,-3,3 de 0 a 3 e a sobra 1,2,3,4 de 0 a 3 que é a base 4 espera dexa eu pensar

1-1
2-2
3-3
4-4
5-sobra 1 ,1 5-1/4=1 que pode representa 00 1=0
6-sobra 1, -1 6-1-1/4=1 que pode representar 01 -1=1
7 sobra 1, 3 7-3/4=1 que pode representar 02 3=2
8 sobra 1 -3 8-1-3/4=1 que pode representa 03 -3=3 1 que e a sobra =0

.
.
.
.
11 sobra 2 ,3 11-3/4=2 2 que é a sobra =1 3=2 podendo ser representado = 12

para cade bits 4 -tem quatro valores e 44 tem 16 5-20 que pode fazer a conta 1x4)+1) que é o menor valor para 2de base 4 e (4x4)+1+3 e maior valor de 2 de base 4.
ou seja so vai subtrai um desses valores -1-1 ,-1-3 ,-1,-3 e ve se da exata a divisão
esse é o calculo que inventei não sei se ta certo kkkk mas acho que ta

R

foi uma pergunta, não táva afirmando

j-menezes

É preciso entender bem seus calculos e testa-los a exaustão.
Mas penso que você deva continuar tentando e aprimorando os calculos.

Não vai nessa não que tudo já está feito e não dá pra fazer melhor, as vezes as mentes não academizadas por assim dizer, conseguem enxergar e desenvolver novidades.

Olha para uma semente, nela contem uma arvore que darão muitos frutos e cada fruto tem muitas sementes.

Uma vez foi dito que um homem consegue contar quantas sementes tem em uma fruta, mas que somente Deus pode saber quantas frutas tem em uma semente.

O que quero dizer é que descobrir como a natureza funciona é o melhor, já pensou em uma formula de infinitos numeros em um numero finito?, parece “impossível” né !, mas tenha cuidado com essa palavra.

Continua sonhando, o mundo pertence aos sonhadores, mas saiba, os sonhadores cansam as pessoas, então logo te dirão que queres reinventar a roda, que é perder tempo, no entanto se todos pensassem assim não teríamos o computador, nem a descoberta da eletricidade e tantas maravilhas do mundo moderno que parece até que sempre existiram.

Quanto a sua formula, quero me debruçar nela e ver com mais calma, quem sabe aí esteja algo que estou a tempo procurando.

Vamos lá então …
Supondo a seguinte sequencia
20939831839037810936710982394111093898322298222338165977715676631

Qual o tamanho que fica usando a sua formula?

hugokotsubo

Não sou contra inovar e pensar fora da caixa.
Mas também não gosto de incentivar caminhos que já sei que não darão em nada.


Imagina eu chegar num fórum de medicina e dizer “Se detergente tira a gordura da louça, então eu vou emagrecer se bebê-lo?

Aí todos vão responder horrorizados que não, isso não faz o menor sentido. Mas eu insisto, porque afinal sou um “sonhador” e acredito que nada é impossível. E resolvo tomar detergente todo dia pra comprovar minha tese.

Não, eu não preciso tomá-lo pra saber que vai dar muito errado. E se a ideia fosse de outra pessoa, eu não a incentivaria.

É o que eu fiz aqui, a ideia não faz sentido e eu não quero incentivar ninguém a fazer algo sem nexo. Primeiro entenda como as coisas funcionam (e principalmente, porque funcionam assim, quais as limitações, etc), e só depois pense em como melhorá-las. Fazer o contrário não costuma dar certo (é raríssimo os casos que dão).


Claro que tudo que existe pode ser melhorado, mas pra isso precisa de um mínimo de lógica e embasamento técnico (duas coisas que não vi ainda nesse método maluco).

j-menezes

Eu ví e vou testar

davidbuzatto

Pessoal, é só uma tentativa de criar um algoritmo não tão ortodoxo para mudar a base do número. Nada demais. Há a impressão de “compressão” por causa da mudança da base, só isso.

public static void main( String[] args ) {

    int[] numeros = { 3666, 1024, [telefone removido] };
    int[] bases = { 2, 3, 4 };

    for ( int n : numeros ) {
        System.out.print( n + ": " );
        for ( int b : bases ) {
            System.out.printf( "base %d = %s | ", b, Integer.toString( n, b ) );
        }
        System.out.println();
    }

}
R

é. so que ela conta as combinações de números de base 4 ex 44 ou somente 4 .eu to tentando uma utilidade para essa forma de contar … da para fazer na base 2 subtraindo -1 e dividindo por 2 ou somente dividindo por 2 deixando o resto. @j-menezes

j-menezes

Sabe por que isso me soa familiar?
Porque já fiz algo parecido e to precisando de um produto pra desentupir a pia.
Tem uma coisa ai na sua sequencia que preciso mesmo ver melhor

Antes de Eu analisar o seu pensamento nessa formula, poderias responder a minha pergunta naquela sequencia?

Se possível tambem gostaria que realizasse seguindo o seu primeiro pensamento com aquela separação dos bloquinhos

davidbuzatto

20939831839037810936710982394111093898322298222338165977715676631 em base 3 é
210221000100120020000101202010212020002220220110122122020211212001111111212220212211100001102101000220210210011211000200122220012020101

BigInteger bi = new BigInteger( "20939831839037810936710982394111093898322298222338165977715676631" );
System.out.println( bi.toString( 3 ) );
R

vocÊ pega o valor

se der exato voce conta -1
vocçê pega o valor

voce pega o valor e

“rafaellvb:

-1-3/4= se der exato conta -3 ai você vai fazendo ate der um valor 1 a 4 que é o resto
igual no exemplo mas to tentando ve se tem alguma ultilidade

staroski

De qualquer forma, você continua não respondendo um questionamento que vou fazer pela 3ª vez:
Como é que você pensa em armazenar esse valor?
É algo que eu realmente gostaria de saber.

Você criou esse tópico com o intuito de discutir sua ideia para reduzir espaço de armazenamento.
Mas até agora não explicou como de fato vai reduzir.

Por exemplo o número da sua primeira postagem: 1-111-0.

Qual é sua proposta para armazenar esse valor em um registrador, ocupando menos espaço do que a forma tradicional utilizando binário?

Seria de grande valia se pudesse nos explicar.

R

eu me equivoquei esquece essa postagem kkk é por que eu vi em algum lugar , que como você disse ta errado. do que dava para salvar bits separados onde cada separação contada como um bit @staroski ai fui nesse racíssionio pensava que podia

staroski

Entendi, obrigado por esclarecer.
Realmente pensei que você estivesse bolando algo com computação quântica, alguma forma de armazenar mais do que somente 2 estados.

R

não da para armazenar so mente 2 bits 3 bits 4 bits exe 10 100 1111 no menor espaço numa lista talvez que fique valores de sim ou não 1x 2x 3x guardar so essa informação

davidbuzatto

O ENIAC se não me engano era um computador decimal. Imagina a quantidade de fios para armazenar 10 estados. É inviável.

hugokotsubo

De forma geral, é possível converter de qualquer base para qualquer outra. E esse algoritmo já existe.

Mas como já dito, mudar a base só muda a representação do número. Isso não serve para “diminuir o armazenamento de bits”.

R

e muito grande esse numero

j-menezes

Essa é a primeira parte, agora o que me interessa é a segunda onde tem uma representação desses valores de outra forma.

Então primeiro explode aumentando e depois implode diminuindo, mas penso em uso alem disso,que no momento não vem o caso eu falar.

KWill

“Minha ideia é sobre diminuir o armazenamento de bits…”

Essas ideias sao parecidas com o conceito de compressao de dados, que acredito que deve ser um dos objetivos implicitos da vossa instancia.
Artigo da wikipedia com o basico da teoria:

Isso de representar numeros usando matemágica e reduzindo o espaço ocupado pelos dados acho que cabe em codificacao de entropia:

Tem varios metodos ja estudados e patenteados como Asymmetric_numeral_systems, Golomb_coding, Huffman_coding, Range_coding, etc.

Va estudar algoritmos, teorias e implementacoes de compressao de dados neste forum:

Criado 14 de março de 2023
Ultima resposta 2 de abr. de 2023
Respostas 45
Participantes 6