09.10.2013, 01:51
(
Last edited by ipsBruno; 12/10/2013 at 12:48 AM.
)
Quote:
TУPICO ATUALIZADO. Novos cуdigos adicionados! Ъltima atualizaзгo: 21:49 AM de 11/10/13 |
Operador NOT
normal:
pawn Code:
if(!var)
pawn Code:
if(1 ^ (var & var))
admin || item != 5
Mйtodo comum:
pawn Code:
if( admin || item != 5))
pawn Code:
if ( ( (admin & 1) | ( (admin ^ 7) & (item ^ 5) ) ) )
pawn Code:
if( (admin & 1) | (i ^ 5) )
pawn Code:
if((!((item ^ 5)) ^ !(!((item ^ 5)) & !((admin ^ 1)))))
Mйtodo Bruno. Sem !
pawn Code:
if(((1^((item ^ 5) & (item ^ 5))) ^ (1^(((1^((item ^ 5) & (item ^ 5))) & (1^((admin ^ 1) & (admin ^ 1)))) & ((1^((item ^ 5) & (item ^ 5))) & (1^((admin ^ 1) & (admin ^ 1))))))))
pawn Code:
if(~(~(item ^ 5) & ~admin))
Mйtodo Will. Sem |
pawn Code:
if ((admin) ^ ((admin ^ 0b11111111111) & (item ^ 5)))
Link original
valor absolute
pawn Code:
new x = -111;
x = floatabs(x);
pawn Code:
new x = -111;
x = (x & 0x80000000) ? ~x+1 : x;
a >= b
PHP Code:
if( ((b-a) & 0x80000000) | !(a ^ b))
PHP Code:
if(!(((a-((a-b)&(a-b)>>31))^a)) | !(a ^ b))
a <= b
PHP Code:
if( ((a-b) & 0x80000000) | !(a ^ b))
PHP Code:
if(!!(((a-((a-b)&(a-b)>>31))^a)) | !(a ^ b))
checar negatividade
PHP Code:
if( a < 0)
PHP Code:
if( (a & 0x80000000) ) // fasthest
checar positividade
PHP Code:
if( a > 0)
PHP Code:
if( !(a & 0x80000000) ) //fasthest
a > b
PHP Code:
if(a > b)
PHP Code:
if(!(((a-((a-b)&(a-b)>>31))^a)))
PHP Code:
if( (b-a) & 0x80000000)//fasthest
a < b && a != 0
PHP Code:
if( (!!(((a-((a-b)&(a-b)>>31))^a))) & (a ^ 0))
PHP Code:
if( ((a-b) & 0x80000000) & (a ^ 0))// fastheat
get min value
pawn Code:
if( a >= b) {
maxs = b;
}
else
{
maxs = a;
}
pawn Code:
maxs = min(a,b);
pawn Code:
maxs = y ^ ((x ^ y) & -(!((y-x) & 0x80000000)));
get max value
pawn Code:
if( a >= b) {
maxs = a;
}
else
{
maxs = b;
}
pawn Code:
maxs = max(a,b);
pawn Code:
maxs = (((a-((a-b)&(a-b)>>31))));
ou
pawn Code:
maxs = x ^ ((x ^ y) & -( (!((y-x) & 0x80000000) ))) //fasthest
a > b && a != 0
PHP Code:
if( (!(((a-((a-b)&(a-b)>>31))^a))) & (a ^ 0))
PHP Code:
if( ((b-a) & 0x80000000) & (a ^ 0))
a < b && a == 0
PHP Code:
if( (!(((a-((a-b)&(a-b)>>31))^a))) & !(a ^ 0))
PHP Code:
if( ((a-b) & 0x80000000) & !(a ^ 0))
a > b && a == 0
PHP Code:
if( (!!(((a-((a-b)&(a-b)>>31))^a))) & !(a ^ 0))
a < b
PHP Code:
if(a < b)
PHP Code:
if(!!(((a-((a-b)&(a-b)>>31))^a)))
pawn Code:
if(((a-b) & 0x80000000))
Igualdade com XOR
pawn Code:
if( vara == 1)
pawn Code:
if( !(vara^1))
Igualdade com AND
pawn Code:
if( vara == 1 && varb == 2)
pawn Code:
if( !(vara ^ 1) & !(varb ^ 2) )
Igualdade com OR
pawn Code:
if( vara == 1 || varb == 2)
pawn Code:
if( !(vara ^ 1) | !(varb ^ 2) )
Verificar se um й MAIS e outro MENOS
Como verificar se os valores tem sinais opostos?
Bem, vocк normalmente faria:
pawn Code:
new var1 = - 10;
new var2 = + 10;
if( var1 > 0 && var2 < 0 || var1 < 0 && var2 > 0)
pawn Code:
if( var1 ^ var2 < 0)
Diferenзa
Й possнvel checar a diferenзa de dois valores sem usar !=
pawn Code:
if( var1 != var2)
pawn Code:
if(var1 ^ var2)
Diferente de -1
Para checar se um nъmero й diferente de menos um normalmente fizemos:
pawn Code:
if(-1 != var)
pawn Code:
if(~var)
Igual a um valor, ou igual a outro acrescido
Para checar se um valor й igual a outro valor ou este valor й igual a outro valor acrescido de mais um valor, normalmente fizemos:
pawn Code:
if(var1 == var2 || var1 == var2 + 30)
pawn Code:
if( !((30 ^ (var1 ^ var2)) & (var1 ^ var2)) )
Elevar o 2 na potкncia
Para elevar 2 a x potкncia normalmente usamos
pawn Code:
printf("%f", floatpower(2, 10)); // 2 elevado a 10
pawn Code:
printf("%d", 1 << 10);
Multiplicaзгo
Para multiplicar um valor por 4, basta fazer:
pawn Code:
printf("%d", 5 << 2); // 5 * 4 = 20
printf("%d", 6 << 2); // 6 * 4 = 24
e assim vai, dб pra multiplicar por * 4,8,16,32 .. bastando usar a sequкncia << 2,3,4,5 ..
Divisгo
Assim como na divisгo, basta usar o inverso >>
pawn Code:
printf("%d", 6 >> 1); // 6 / 2
Pares
Muita gente conhece o operador %, mas hб outro modo de pegar nъmeros pares ou impares
Normalmente, uma pessoa faria:
pawn Code:
if(16 % 2 == 0)
pawn Code:
if(!(16 & 1))
Impares
Normalmente, uma pessoa faria:
pawn Code:
if(17 % 2 != 0)
pawn Code:
if((16 & 1))
Valores nulos
Hб vбrios mйtodos para comparar valores nulos, o mais comum й o pessoal fazer:
pawn Code:
if(var1 == 0 && var2 == 0 && var3 == 0)
pawn Code:
if(var1 | var2 | var3 == 0)
Trocar sinal
Hб vбrios modos, um deles й este:
PHP Code:
printf("%d", (~var + 1) );
PHP Code:
printf("%d", (var ^ -1) + 1 );
Troca de valores
Uma pessoa normal faria:
pawn Code:
new a = 1;
new b = 2;
new t = b;
b = a;
a = t;
pawn Code:
a ^= b;
b ^= a;
a ^= b;
Pegar ъltimo nъmero
Essa dica nгo deve ser ъtil, mas й interessante
Vocк sabe como pegar o dнgito nъmero de um nъmero?
1648988484? Basta usar % 8
Logo:
pawn Code:
printf("%d", 1648988484 % 8);
pawn Code:
printf("%d", 16489884818 % 8);
Toogle valores
Jб viram aquele: Caso estiver UM, mudar para ZERO. Caso Estiver ZERO. Mudar para UM.
Como vocк faria? Provбvelmente
pawn Code:
if(var == 1) var = 0;
else var = 1;
pawn Code:
var = var == 1 ? 0 : 1;
Nada disto, apenas use:
pawn Code:
var = !var;
Tуpico original: http://ipsbr.net/portal/index.php/board,23.0.html
... inacabado. Em breve novas dicas avanзadas.