4D v16.3Operadores de bit |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4D v16.3
Operadores de bit
Operadores de bit
Os operadores de bits são aplicados a expressões ou valores de tipo Inteiro longo. Nota: se passa um valor de tipo Inteiro ou Numérico a um operador de bits, 4D ou converte em Inteiro longo antes de calcular a expressão que utiliza o operador de bits. Quando utilize operadores de bits, deve considerar um valor de tipo Inteiro longo como um array de 32 bits. Os bits são numerados de 0 a 31, de direita para a esquerda. Como cada bit pode valer 0 ou 1, você pode igualmente considerar um valor de tipo Inteiro longo como uma expressão onde pode armazenar 32 valores de tipo Booleano. Quando o bit vale 1, o valor é True quando vale 0, o valor é False. Uma expressão que utiliza um operador de bits devolve um valor de tipo Inteiro longo, exceto para o operador Bit Test, onde a expressão devolve um valor Booleano. A seguinte tabela lista os operadores de bits e sua sintaxe:
Notas (1) Nas operações utilizando Left Bit Shift e Right Bit Shift, o segundo operando indica o número de posições de bits que o primeiro operando se moverá no valor resultante. Portanto, este segundo operando deve estar entre 0 e 31. Note entretanto, que mover 0 devolve um valor sem mudança e mover mais de 31 bits devolve 0x00000000 porque todos os bits se perdem. Se passa outro valor como segundo operando, o resultado não é significativo.(2) Nas operações utilizando Bit Set, Bit Clear e Bit Test, o segundo operando indica o número do bit na qual atual. Portanto, este segundo operando deve estar entre 0 e 31. Do contrário, a expressão devolve o valor do primeiro operando sem mudar o valor por Bit Set e Bit Clear, e retorna False para Bit Test. A seguinte tabela lista os operadores de bits e seus efeitos:
(1) A tabela a seguir dá um exemplo de cada operador de bits:
Estas constantes permitem provar o valor devolvido por Get resource properties ou criar o valor a passar a SET RESOURCE PROPERTIES. As constantes cujo nome termina em “bit” dão a posição do bit que quer provar, apagar, ou definir. As constantes cujo nome termina em “mask” dão um valor de tipo Inteiro longo onde só o bit (que quer provar, apagar ou asignar) é igual a um. Por exemplo, para provar se um recurso (cujas propriedades foram armazenadas na variável $vlResAttr) são purgáveis ou não, pode escrever: If($vlResAttr ?? Purgeable resource bit) ` O recurso é purgável? ou: If(($vlResAttr & Purgeable resource mask)#0)O recurso é purgável? Ao contrário, pode utilizar estas constantes para definir o mesmo bit. Pode escrever: $vlResAttr:=$vlResAttr ?+Purgeable resource bit ou: $vlResAttr:=$vlResAttr |Purgeable resource bit (3) Este exemplo armazena dois valores Inteiros em um valor Inteiro longo. Pode escrever: $vlLong:=($viIntA<<16)|$viIntB ` Armazenar dois Inteiros em um Inteiro longo Dica: seja cuidadoso ao manipular valores de tipo Inteiro longo ou Entero com expressões que combinam operadores numéricos e bitwise. O bit superior (bit 31 para Inteiro longo, bit 15 para Inteiro) define o sinal do valor, positivo se for zero, negativo se for 1. Os operadores numéricos utilizam este bit para detectar o signo de um valor, mas os operadores de bits não consideram o significado de este bit.
Ver também
Operadores
|
PROPRIEDADES
Produto: 4D
HISTÓRIA
ARTICLE USAGE
Manual de linguagem 4D ( 4D v16) |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||