Ativa o menu
Alternar menu de preferências
Alternar menu pessoal
Não autenticado(a)
Your IP address will be publicly visible if you make any edits.

Fixed point numbers

De Brdoom wiki
Revisão de 18h49min de 5 de fevereiro de 2026 por MegaManx3 (discussão | contribs) (Criou página com 'O ZDoom comumente representa números de ponto fixo como inteiros de 32 bits, com a parte inteira do número representado armazenada nos 16 bits superiores, e com a parte fracionária (em 65536 avos) armazenada nos 16 bits inferiores. Em outras palavras, a representação em ponto fixo de um número é esse número vezes 65536. Para fazer multiplicações e divisões em números de ponto fixo em scripts ACS, você pode usar funções como FixedMul e [[FixedDiv]...')
(dif) ← Edição anterior | Revisão atual (dif) | Versão posterior → (dif)

O ZDoom comumente representa números de ponto fixo como inteiros de 32 bits, com a parte inteira do número representado armazenada nos 16 bits superiores, e com a parte fracionária (em 65536 avos) armazenada nos 16 bits inferiores.

Em outras palavras, a representação em ponto fixo de um número é esse número vezes 65536.

Para fazer multiplicações e divisões em números de ponto fixo em scripts ACS, você pode usar funções como FixedMul e FixedDiv.

Você pode converter um inteiro para uma representação em ponto fixo desse inteiro simplesmente deslocando o inteiro desejado 16 bits para a esquerda:

 int myCoolInteger = 72;
 int myCoolFixedPointValue = myCoolInteger << 16; //Result is 4718592

Fazendo o caminho inverso é tão fácil quanto...

 int myCoolFixedPointValue = 4718592;
 int myCoolInteger = myCoolFixedPointValue >> 16; //Result is 72

Você também pode especificar números de ponto fixo como literais em scripts ACS:

 int myFixedPointNumber = 1.5;

myFixedPointNumber agora é (1.5 * 65536) = 98304. Se a intenção for um valor inteiro, você deve usar um ponto decimal, por exemplo 4.0, ou usar o deslocamento para a esquerda descrito acima; o ACS não sabe que tipo um número deveria ser.

Veja também