Entrar
Últimos assuntos
» player não consegue andarpor lovn7 Qui 21 Nov 2024, 13:33
» É possível fazer istó no game maker
por William Lima Qui 21 Nov 2024, 10:56
» Rio Rise - novo launcher do Gta San Andreas SAMP Brasil
por Lua Sáb 16 Nov 2024, 20:22
» (Resolvido) Cenario longo x Texture Pages
por josuedemoraes Sáb 16 Nov 2024, 15:31
» Kids' band
por Adilson Lucindo Santos Sex 15 Nov 2024, 12:23
» (RESOLVIDO) Engasgos-Troca de Sprites/animações
por josuedemoraes Ter 12 Nov 2024, 01:49
» Block Room - DEMO
por Joton Qua 06 Nov 2024, 22:58
» Game Infinito vertical (subindo)
por macmilam Sáb 26 Out 2024, 12:36
» Retorno da GMBR!!!
por Dancity Ter 22 Out 2024, 16:36
» Máquina de estados
por aminaro Qui 10 Out 2024, 13:33
» como faço pra um objeto colidir com o outro e diminuir a vida do player ?
por josuedemoraes Qui 03 Out 2024, 16:51
» RESOLVIDO: Colisão com objetos moveis
por josuedemoraes Qua 02 Out 2024, 20:28
» Crypt of the Blood Moon
por divin sphere Qua 11 Set 2024, 18:18
» como fazer um objeto seguir?
por divin sphere Dom 18 Ago 2024, 18:08
» Procuro de alguém para Modelar/Texturizar/Animar objetos 3D
por un00brn Dom 11 Ago 2024, 11:10
» Destruição de cenário (estilo DD Tank)
por CoronelZeg Sex 09 Ago 2024, 17:16
» RESOLVIDO-Como destruir uma instancia especifica de um objeto
por josuedemoraes Ter 23 Jul 2024, 00:40
» Automatizar a coleta de id
por GabrielXavier Seg 22 Jul 2024, 18:01
» Preciso de ajuda para concluir um pequeno projeto
por lmoura Qui 27 Jun 2024, 15:45
» ANGULO ACOMPANHAR O OBJETO
por Klinton Rodrigues Qui 27 Jun 2024, 08:34
» Musica reinicia quando sala reinicia
por GabrielXavier Ter 18 Jun 2024, 07:28
» como fazer uma copia de gd
por generico_cube Sex 14 Jun 2024, 15:48
» Square Adventure
por guilherme551 Ter 11 Jun 2024, 09:54
» como posso definir limite de uma variavel
por GabrielXavier Sex 07 Jun 2024, 14:14
» [Resolvido] Dúvida, colisão única de objeto
por vdm842 Sex 24 maio 2024, 09:50
Pedido de Toturial - Operações com byte
4 participantes
Página 1 de 1
Pedido de Toturial - Operações com byte
tava mechendo aqui pra fazer uma AI pra meu jogo.
ae me deparei com algo que nunca tinha entendido direito:
Operação com arquivos binarios e operadores de bitwise (& | ^).
sera que alguem sabe de algum tuto ou pode explicar ae?
vlw!
ae me deparei com algo que nunca tinha entendido direito:
Operação com arquivos binarios e operadores de bitwise (& | ^).
sera que alguem sabe de algum tuto ou pode explicar ae?
vlw!
Re: Pedido de Toturial - Operações com byte
& - and binário;
| - or binário;
^ - xor binário.
Esses operam com números em binário. Exemplo simples:
Como você sabe, 5 se escreve 101 em binário, 6 se escreve 110.
Se fizermos 5 & 6, vamos obter o and binário, ou seja, que devolve 1 em cada casa se e só se ambas os números tiverem 1 nessa casa.
Neste caso:
101 = 5
110 = 6
--------- &
100 = 4
E se fosse |? Nesse caso seria or binário, que devolve 1 em cada casa se pelo menos um dos números tiver 1 nessa casa.
Neste caso:
101 = 5
110 = 6
--------- |
111 = 7
E no caso do ^? Bom esse é o xor binário, que devolve 1 em cada casa se APENAS UM dos números tiver 1 nessa casa.
Neste caso:
101 = 5
110 = 6
--------- ^
011 = 3
Existem ainda mais dois operadores binários em GML, são eles: << e >> que multiplicam e dividem, respectivamente números binários, 'rodando' as casas na direcção indicada. Eles vão dividir/multiplicar por uma potência de base 2 porque vão rodar o número n casas para a direita/esquerda.
Exemplo
5>>2 = 101>>2 = 001 = 1
7>>1 = 111>>1 = 011 = 3
etc.
P.S.: alguma dúvida, só perguntar
| - or binário;
^ - xor binário.
Esses operam com números em binário. Exemplo simples:
Como você sabe, 5 se escreve 101 em binário, 6 se escreve 110.
Se fizermos 5 & 6, vamos obter o and binário, ou seja, que devolve 1 em cada casa se e só se ambas os números tiverem 1 nessa casa.
Neste caso:
101 = 5
110 = 6
--------- &
100 = 4
E se fosse |? Nesse caso seria or binário, que devolve 1 em cada casa se pelo menos um dos números tiver 1 nessa casa.
Neste caso:
101 = 5
110 = 6
--------- |
111 = 7
E no caso do ^? Bom esse é o xor binário, que devolve 1 em cada casa se APENAS UM dos números tiver 1 nessa casa.
Neste caso:
101 = 5
110 = 6
--------- ^
011 = 3
Existem ainda mais dois operadores binários em GML, são eles: << e >> que multiplicam e dividem, respectivamente números binários, 'rodando' as casas na direcção indicada. Eles vão dividir/multiplicar por uma potência de base 2 porque vão rodar o número n casas para a direita/esquerda.
Exemplo
5>>2 = 101>>2 = 001 = 1
7>>1 = 111>>1 = 011 = 3
etc.
P.S.: alguma dúvida, só perguntar
Re: Pedido de Toturial - Operações com byte
a agora entendi. mas não vejo a utiladade ou em que poderia usar isso. :|
tem algum exemplo do uso disso em um jogo?
vlw pedrosorio.
tem algum exemplo do uso disso em um jogo?
vlw pedrosorio.
Re: Pedido de Toturial - Operações com byte
Oh... Pois, realmente não tenho... Mas podem ser úteis. Se você souber como está organizado um determinado formato de ficheiro pode ser útil já que geralmente se guarda mais do que uma informação por byte, aí é importante saber manipular para extrair a informação de todos os bits.
Outro exemplo, imagine que você quer enviar o mínimo de informação num jogo online e que tem 8 variáveis de valor true/false. Em vez de enviar as 8, você envia 1 variável apenas. Imagine que nessa variável (chamemos-lhe 'num') temos 8 bits e cada bit representa verdadeiro(1) ou falso(0). Você quer saber o valor do 5ª bit (a contar da direita), aí você faz:
bit5 = (num>>4) & 1;
Imagine por exemplo que a variável tinha esta informação em binário:
87654321 - bit número
00110011 - informação no bit
Ao fazer num>>4 ia ficar assim:
87654321 - bit número
00000011 - informação no bit
Em seguida fazemos um and binário com o número 1, que tem a seguinte representação binária:
00000011 = num>>4
00000001 = 1
------------------------ &
00000001 = 1
Ou seja, o 5º bit valia 1. É fácil ver que se valesse 0, o resultado seria 0. Assim você consegue passar muito mais informação com menos bytes.
Outro exemplo, imagine que você quer enviar o mínimo de informação num jogo online e que tem 8 variáveis de valor true/false. Em vez de enviar as 8, você envia 1 variável apenas. Imagine que nessa variável (chamemos-lhe 'num') temos 8 bits e cada bit representa verdadeiro(1) ou falso(0). Você quer saber o valor do 5ª bit (a contar da direita), aí você faz:
bit5 = (num>>4) & 1;
Imagine por exemplo que a variável tinha esta informação em binário:
87654321 - bit número
00110011 - informação no bit
Ao fazer num>>4 ia ficar assim:
87654321 - bit número
00000011 - informação no bit
Em seguida fazemos um and binário com o número 1, que tem a seguinte representação binária:
00000011 = num>>4
00000001 = 1
------------------------ &
00000001 = 1
Ou seja, o 5º bit valia 1. É fácil ver que se valesse 0, o resultado seria 0. Assim você consegue passar muito mais informação com menos bytes.
Re: Pedido de Toturial - Operações com byte
assim...
então pode ser usado para manter muita informação com pouco tamanho.
as rom de emuladores em sua maioria são arquivos binarios.
quando se ve as informações da rom diz que tem 256mb enquanto seu arquivo binario tem apenas 32mb.
obrigado pedrosorio!
flw!
então pode ser usado para manter muita informação com pouco tamanho.
as rom de emuladores em sua maioria são arquivos binarios.
quando se ve as informações da rom diz que tem 256mb enquanto seu arquivo binario tem apenas 32mb.
obrigado pedrosorio!
flw!
Re: Pedido de Toturial - Operações com byte
Já agora, kabecao, se quiseres mais informação sobre tipos de ficheiros e como estão organizados em forma binária podes consultar este site: http://www.wotsit.org
Re: Pedido de Toturial - Operações com byte
era isso que tava procurando.
sempre quis entender com os programas liam aqueles monte de letras estranhas.
agora da pra eu fazer salves e arquivos com os textos do meu jogo em binario.
vlw.
sempre quis entender com os programas liam aqueles monte de letras estranhas.
agora da pra eu fazer salves e arquivos com os textos do meu jogo em binario.
vlw.
Re: Pedido de Toturial - Operações com byte
tem como fazer para tranformar varios varlores em binario
exenplo
var1=0
var2=0
var3=1
então ele cria o valor 001
e depois fazer o aucontrario
exenplo
var1=0
var2=0
var3=1
então ele cria o valor 001
e depois fazer o aucontrario
Re: Pedido de Toturial - Operações com byte
cara de uma olhada na data do topico!
nao reviva topicos!
nao reviva topicos!
Janx- Data de inscrição : 24/05/2008
Reputação : 14
Número de Mensagens : 2417
Prêmios :
x 0 x 0 x 0
x 0 x 2 x 0
x 0 x 0 x 0
Tópicos semelhantes
» Operações matemáticas
» CALCULADORA 4 OPERAÇÕES
» [Pergunta e pedido]Duvida ataque e pedido de sprite
» Calculadora, Principais Operações Matematicas
» Game Maker - Aula 5 - Operações Matemáticas
» CALCULADORA 4 OPERAÇÕES
» [Pergunta e pedido]Duvida ataque e pedido de sprite
» Calculadora, Principais Operações Matematicas
» Game Maker - Aula 5 - Operações Matemáticas
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos