Esses truques são para deixar seus cуdigos mais velozes, mais bonitos e atй em alguns casos lhe poupar tempo. São truques básicos, que podem ser usados em praticamente qualquer linguagem. Desde PHP até C++/C/Pawn
Operador NOT
normal:
Código do peão:Operador NOT
normal:
- Código:
se ( ! var )
método Bruno:
Código do peão:- Código:
if ( 1 ^ ( var & var ) )
administrador || item != 5
Método comum:
- Código:
if ( admin || item != 5 ) )
método Will:
Código do peão:- Código:
if ( ( ( admin & 1 ) | ( ( admin ^ 7 ) & ( item ^ 5 ) ) ) )
Método Dartakous
Código do peão:- Código:
if ( ( admin & 1 ) | ( i ^ 5 ) )
Método Bruno. Sem |
Código do peão:- Código:
if ( ( ! ( ( item ^ 5 ) ) ^ ! ( ! ( ( item ^ 5 ) ) & ! ( ( admin ^ 1 ) ) ) ) )
Método Bruno. Sem!
- Código:
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 ) ) ) ) ) ) ) )
Método Bruno. Sem |
Código do peão:- Código:
if ( ~ ( ~ ( item ^ 5 ) & ~ admin ) )
Método Will. Sem |
- Código:
if ( ( admin ) ^ ( ( admin ^ 0b11111111111 ) & ( item ^ 5 ) ) )
valor absoluto
- Código:
novo x = -111 ; _
x = floatabs ( x ) ;
pára
Código do peão:- Código:
novo x = -111 ; _
- Código:
x = ( x & 0x80000000 ) ? ~x + 1 : x;
a >= b
- Código:
if( ((b-a) & 0x80000000) | !(a ^ b))
você
Código PHP:- Código:
if(!(((a-((a-b)&(a-b)>>31))^a)) | !(a ^ b))
a <= b
- Código:
if( ((a-b) & 0x80000000) | !(a ^ b))
você
Código PHP:- Código:
if(!!(((a-((a-b)&(a-b)>>31))^a)) | !(a ^ b))
checar negatividade
- Código:
if( a < 0)
você
Código PHP:- Código:
if( (a & 0x80000000) ) // fasthest
checar positividade
- Código:
if( a > 0)
você
Código PHP:- Código:
if( !(a & 0x80000000) ) //fasthest
a > b
- Código:
if(a > b)
poderia ser feito
Código PHP:- Código:
if(!(((a-((a-b)&(a-b)>>31))^a)))
você
Código PHP:- Código:
if( (b-a) & 0x80000000)//fasthest
a < b && a != 0
- Código:
if( (!!(((a-((a-b)&(a-b)>>31))^a))) & (a ^ 0))
Código PHP:
- Código:
if( ((a-b) & 0x80000000) & (a ^ 0))// fastheat
obter valor mínimo
- Código:
se ( a >= b ) {
maxs = b;
}
else
{
maxs = a;
}
você
Código do peão:- Código:
maxs = min ( a,b ) ;
você
Código do peão:- Código:
maxs = y ^ ( ( x ^ y ) & - ( ! ( ( y - x ) & 0x80000000 ) ) ) ;
obter valor máximo
- Código:
se ( a >= b ) {
maxs = a;
}
else
{
maxs = b;
}
você
Código do peão:- Código:
maxs = max ( a,b ) ;
você
Código do peão:maxs = ( ( ( a - ( ( a - b ) & ( a - b ) >> 31 ) ) ) ) ;
você
- Código:
maxs = x ^ ( ( x ^ y ) & - ( ( ! ( ( y - x ) & 0x80000000 ) ) ) // mais rápido
a > b && a != 0
- Código:
if( (!(((a-((a-b)&(a-b)>>31))^a))) & (a ^ 0))
você
Código PHP:- Código:
if( ((b-a) & 0x80000000) & (a ^ 0))
a < b && a == 0
- Código:
if( (!(((a-((a-b)&(a-b)>>31))^a))) & !(a ^ 0))
você
Código PHP:- Código:
if( ((a-b) & 0x80000000) & !(a ^ 0))
a > b && a == 0
- Código:
if( (!!(((a-((a-b)&(a-b)>>31))^a))) & !(a ^ 0))
a < b
- Código:
if(a < b)
poderia ser feito
Código PHP:- Código:
if(!!(((a-((a-b)&(a-b)>>31))^a)))
você
Código do peão:- Código:
se ( ( ( a - b ) & 0x80000000 ) )
Igualdade com XOR
- Código:
se ( vara == 1 )
pára
Código do peão:- Código:
se ( ! ( vara ^ 1 ) )
Igualdade com AND
- Código:
if ( vara == 1 && varb == 2 )
com operadores:
Código do peão:- Código:
if ( ! ( vara ^ 1 ) & ! ( varb ^ 2 ) )
Igualdade com OU
- Código:
if ( vara == 1 || varb == 2 )
com operadores:
Código do peão:- Código:
if ( ! ( vara ^ 1 ) | ! ( varb ^ 2 ) )
Verifique se um é MAIS e outro MENOS
Como verificar se os valores têm sinais opostos?
Bem, você normalmente faria:
- Código:
nova var1 = - 10 ;
nova var2 = + 10 ;
if ( var1 > 0 && var2 < 0 || var1 < 0 && var2 > 0 )
Mas é ruim, muitas comparações, operações. Simplesmente faзa:
Código do peão:- Código:
se ( var1 ^ var2 < 0 )
Diferença
É possível checar a diferença de dois valores sem usar !=
- Código:
se ( var1 != var2 )
usar:
Código do peão:- Código:
se ( var1 ^ var2 )
Diferente de -1
Para checar se um número é diferente de menos um normalmente feito:
- Código:
se ( -1 ! = var )
pois com bitwise, podemos fazer:
Código do peão:- Código:
se ( ~var )
boa, né?
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 feitas:
Código do peão: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 feitas:
- Código:
if ( var1 == var2 || var1 == var2 + 30 )
basta fazer
Código do peão:- Código:
if ( ! ( ( 30 ^ ( var1 ^ var2 ) ) & ( var1 ^ var2 ) ) )
Difícil, né?
Elevar o 2 na potência
Para elevar a potência 2 ax normalmente usada
Código do peão:Elevar o 2 na potência
Para elevar a potência 2 ax normalmente usada
- Código:
[size=14]
[size=13]printf ( " % f" , floatpower ( 2,10 ) ) ; // 2 elevado a 10[/size][/size]
[center][/center]
com outros operadores, podemos fazer:
Código do peão:- Código:
printf ( "%d" , 1 << 10 ) ;
mais rápido, mais fácil, mais bonito.
Multiplicação
Para multiplicar um valor por 4, basta fazer:
Código do peão:Multiplicação
Para multiplicar um valor por 4, basta fazer:
- Código:
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 >>
- Código:
printf ( "%d" , 6 >> 1 ) ; // 6/2
E assim vai indo, sempre vai dividir na base 12, portanto nъmeros impares nгo serгo divididos
Pares
Muita gente conhece o operador %, mas há outro modo de pegar nъmeros pares ou impares
Normalmente, uma pessoa faria:
Código do peão:Pares
Muita gente conhece o operador %, mas há outro modo de pegar nъmeros pares ou impares
Normalmente, uma pessoa faria:
- Código:
se ( 16 % 2 == 0 )
para checar se um número é par. Mas há outro modo melhor:
Código do peão:- Código:
se ( ! ( 16 & 1 ) )
Impares
Normalmente, uma pessoa faria:
- Código:
se ( 17 % 2 != 0 )
para checar se um número é impar. Mas há outro modo melhor:
Código do peão:- Código:
se ( ( 16 e 1 ) )
simples, não?
Valores nulos
Há vários métodos para comparar valores nulos, o mais comum :copyright: o pessoal fazer:
Código do peão:Valores nulos
Há vários métodos para comparar valores nulos, o mais comum :copyright: o pessoal fazer:
- Código:
if ( var1 == 0 && var2 == 0 && var3 == 0 )
que tal economizar tempo, velocidade e acrescentar um pouquinho de beleza ao seu cуdigo fazendo:
Código do peão:- Código:
if ( var1 | var2 | var3 == 0 )
Trocar sinal
Há vários modos, um deles é este:
- Código:
printf("%d", (~var + 1) );
você
Código PHP:- Código:
printf("%d", (var ^ -1) + 1 );
Troca de valores
Uma pessoa normal faria:
- Código:
novo a = 1 ;
novo b = 2 ;
- Código:
novo t = b;
b = a;
a = t;
com XOR, eu faria:
Código do peão:- Código:
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?
164898848 4 ? Basta usar % 8
Logo:
- Código:
printf ( "%d" , 1648988484 % 8 ) ;
vai retornar: 4
Código do peão:- Código:
printf ( "%d" , 16489884818 % 8 ) ;
vai retornar: 8
Toogle valores
JÁ viram aquele: Caso esteja UM, mude para ZERO. Estive Casor ZERO. Mudar para UM.
Como você faria? Provàvelmente
Código do peão:Toogle valores
JÁ viram aquele: Caso esteja UM, mude para ZERO. Estive Casor ZERO. Mudar para UM.
Como você faria? Provàvelmente
- Código:
if ( var == 1 ) var = 0 ;
senão var = 1 ;
ou talvez você seja inteligente e usa operadores temporários?
Código do peão:- Código:
var = var == 1 ? 0 : 1 ;
?
Nada disto, apenas use:
Código do peão:Nada disto, apenas use:
- Código:
var = ! var;
simples, né?
Creditos: IPS Bruno