[Include] beta ibits
#21

Eu que expliquei pro Will essa de declarar as arrays e ajustar o tamanho exato para os bits. hehehe.

Muito bom trabalho, parabйns para nуs.

Abraзos
Reply
#22

Complemento

Lembrando que nгo foi feito o trabalho com 8 bits na include, pois nativamente jб se consegue obter o resultado usando o conceito 'packed' do prуprio pawn. (char)

As vars de 8 bits trabalhariam a possibilidade 0-255 valores.

pawn Code:
new var[MAX_PLAYERS char];

var {playerid} = 5;
Bastante simples !
Reply
#23

Boa Willian (y) (Jб dei muita rep nas ultimas 24h :/)

char = character em quase todas as linguagens, e no Pawn significa 8 bits? o.O
Reply
#24

Quote:
Originally Posted by Juniiro3
View Post
Boa Willian (y) (Jб dei muita rep nas ultimas 24h :/)

char = character em quase todas as linguagens, e no Pawn significa 8 bits? o.O
Char nas demais linguagem й um objeto e tambйm um tipo primitivo de variбvel.

No Pawn й utilizado para compactar valores.

Como foi explicado no tуpico, vocк tem um valor comum que lhe rende 32 bits(espaзos, por exemplo):
pawn Code:
00000000000000000000000000000000 //32 bits
Quando vocк cria vetores como [MAX_PLAYERS], sгo 500 valores que rendem 32 bits para cada um desses valores.

Com essa include vocк consegue controlar melhor isto, e alйm disto, utilizando char tambйm(sу que somente para valores 0-255).

Ficando mais ou menos assim:
Code:
00000000 00000000 00000000 00000000 // 32 bits
Vocк pode notar que eu separei os 32 bits em casinhas de 8 bits, й isso que o pack(char) faz.
Assim vocк consegue utilizar valores com um tamanho menor de memуria ocupada, visando que vocк nгo utilizaria um nъmero de 32 bits...

Logo se vocк usa MAX_PLAYERS em char, ao invйs de um vetor de 500, vocк teria 500 / 4 = 125, oque й uma reduзгo muito, muito grande.
Reply
#25

Quote:
Originally Posted by Willian_Luigi
View Post
Char nas demais linguagem й um objeto e tambйm um tipo primitivo de variбvel.

No Pawn й utilizado para compactar valores.

Como foi explicado no tуpico, vocк tem um valor comum que lhe rende 32 bits(espaзos, por exemplo):
pawn Code:
00000000000000000000000000000000 //32 bits
Quando vocк cria vetores como [MAX_PLAYERS], sгo 500 valores que rendem 32 bits para cada um desses valores.

Com essa include vocк consegue controlar melhor isto, e alйm disto, utilizando char tambйm(sу que somente para valores 0-255).

Ficando mais ou menos assim:
Code:
00000000 00000000 00000000 00000000 // 32 bits
Vocк pode notar que eu separei os 32 bits em casinhas de 8 bits, й isso que o pack(char) faz.
Assim vocк consegue utilizar valores com um tamanho menor de memуria ocupada, visando que vocк nгo utilizaria um nъmero de 32 bits...

Logo se vocк usa MAX_PLAYERS em char, ao invйs de um vetor de 500, vocк teria 500 / 4 = 125, oque й uma reduзгo muito, muito grande.
Beleza entendi

O primeiro bit da sequencia й o significativo (acho), que й usado para sinalizar se o nъmero й negativo ou positivo, certo?
Reply
#26

Quote:
Originally Posted by Juniiro3
View Post
Beleza entendi

O primeiro bit da sequencia й o significativo (acho), que й usado para sinalizar se o nъmero й negativo ou positivo, certo?
Nгo sou Willian... Mas Exato.
Reply
#27

Quote:
Originally Posted by Juniiro3
View Post
Beleza entendi

O primeiro bit da sequencia й o significativo (acho), que й usado para sinalizar se o nъmero й negativo ou positivo, certo?
0-255, nгo tem porque armazenar sinal.

Veja bem...
Code:
00000000 00000000 00000000 00000000
Como eu separei UMA variбvel em 4 pedaзos de 8 bits, isso indica que agora eu tenho 4 possнveis variбveis em uma sу.

Eu posso escrever 4 valores em apenas 1 variбvel.

Por isso quando usamos char, o uso da mesma muda de [], para {}.

E o valor sу pode variar entre 0-255 porque 8 bits ativos gera o valor 255.

@EDIT

no geral й isso mesmo, o ultimo bit(MSB) representa o sinal.
Reply
#28

Opa sr. wilian estou tendo um problema :/ Acho que sua include nao e compativel com alguma include minha
Reply
#29

Quote:
Originally Posted by shittt
View Post
Opa sr. wilian estou tendo um problema :/ Acho que sua include nao e compativel com alguma include minha
Qual foi o problema ?
Reply
#30

Quote:
Originally Posted by Willian_Luigi
View Post
Qual foi o problema ?
a foi mal te encher o saco , era so atualizar a include -_-
Reply
#31

Bacana.
+REP
Reply
#32

@Atualizado. - 15/10/2013
- Implementaзгo de novas funcionalidades extras para manipulaзгo de condicionais.
- Melhorias nos cбlculos para garantir a seguranзa e velocidade.


@Funcionalidades implementadas.
- size(arr[], type) # Retorna o tamanho da estrutura criada.

pawn Code:
new bit4: var <6>;
new bit4: var2 <9>;

printf("%d", size(var, bit4)); //retorna 8, significando que vocк estб utilizando uma variбvel de apenas 8 casas(possibilidades) de 4 bits.
printf("%d", size(var2, bit4); //retorna 16, significando que vocк estб utilizando uma variбvel de 16 casas(possibilidades) de 4 bits.
- any(arr[], slot, type) # Retorna true/false, true quando hб algum bit ativo(1) no slot indicado, false caso contrбrio.

pawn Code:
new bit4: var <2>;

setBit4(var, 0, 10);
setBit4(var, 1, 0);

printf("%d", any(var, 0, bit4)); //retorna 1/true, significando que o slot 0 tem algum bit ativo.
printf("%d", any(var, 1, bit4); //retorna 0/false, significando que o slot 1 nгo tem nenhum bit ativo.
- none(arr[], slot, type) # Retorna true/false, true quando nгo hб nenhum bit ativo(1) no slot indicado, false caso contrбrio.

pawn Code:
new bit4: var <2>;

setBit4(var, 0, 10);
setBit4(var, 1, 0);

printf("%d", none(var, 0, bit4)); //retorna 0/false, significando que o slot 0 tem algum bit ativo.
printf("%d", none(var, 1, bit4); //retorna 1/true, significando que o slot 1 nгo tem nenhum bit ativo.

Hб atualizaзхes de funcionalidades pendentes como a bitCount que serб implementado somente mais a frente,
para quem tiver dъvidas em relaзгo ao uso, haverб um lugar para dъvidas a respeito.


Tуpicos relacionados:

beta iBits
beta iCmd 7.0(rбpido)
beta iLoops
beta iEach
Reply
#33

Opa

cada vez mais melhorando

Bom trabalho cara.
Reply
#34

Bom trabaiф
Reply
#35

@Atualizado. - 04/11/2013
- Implementaзгo do uso de matrizes.
- Implementaзгo de novas formas de manipular variбveis, facilitando o uso geral.



@Implementaзхes.
pawn Code:
bit_var nome <MAX_PLAYERS @bit1>;

bit_array matriz <MAX_PLAYERS, 10 @bit2>;

bit_var_set:2(nome, 0, 1);
bit_var_get:2(nome, 0);

bit_array_set:2(matriz, 0, 0, 1);
bit_array_get:2(matriz, 0, 0);
Os exemplos serгo explicados no tуpico de uso da ibits.



As prуximas atualizaзхes serгo de dimensгo maior, por isso serгo feitas em tуpicos separados.


Tуpicos relacionados:

beta iBits
beta iCmd 7.0(rбpido)
beta iLoops
beta iEach
beta iImage
projeto INPCS
IsPath
Reply
#36

Boa agora sim. :P

Ainda nгo tem suporte a string ?

Enfim bom trabalho
Reply
#37

Quote:
Originally Posted by iSmirnoff
View Post
Boa agora sim. :P

Ainda nгo tem suporte a string ?

Enfim bom trabalho
O bruno deu a ideia de separar pra ficar melhor, jб que o manipulamento de strings й amplo...

iString, a prуxima integrante da IPSI.
Reply
#38

ai sim..

Essa livraria vai longe ainda
Reply
#39

Estou usando e a diferenзa й notбvel!
Muito bom, Parabйns Will.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)