Articles of manipulação de bits

Complemento do Javascript Tilde & Two

Método do complemento de dois – gera -(x + 1) . por exemplo, quando o JavaScript encontra o Tilde ele usa esse método: ~5 = -(5+1) = -6. Tudo bem – vamos mais fundo. Agora vamos falar sobre o método do complemento dos dois. 5 = 0000 0101 Flip = 1111 1010 add one = […]

Como implementar o Bitcount usando apenas operadores Bitwise?

A tarefa é implementar uma lógica de contagem de bits usando apenas operadores bit a bit. Eu tenho que funcionar bem, mas estou querendo saber se alguém pode sugerir uma abordagem mais elegante. Somente operações bit a bit são permitidas. Não “se”, “para” etc int x = 4; printf(“%d\n”, x & 0x1); printf(“%d\n”, (x >> […]

Verificando se um bit está definido ou não

Como verificar se um determinado bit em um byte está definido? bool IsBitSet(Byte b,byte nPos) { return …..; }

Em C / C ++, qual é a maneira mais simples de reverter a ordem dos bits em um byte?

Embora existam várias maneiras de inverter a ordem dos bits em um byte, estou curioso para saber qual é o “mais simples” para um desenvolvedor implementar. E invertendo quero dizer: 1110 -> 0111 0010 -> 0100 Isso é semelhante, mas não uma cópia desta questão do PHP. Isto é semelhante a, mas não uma cópia […]

porque é 1 >> 32 == 1?

Eu estou querendo saber se talvez este seja um bug da JVM? java version “1.6.0_0” OpenJDK Ambiente de tempo de execução (IcedTea6 1.4.1) (6b14-1.4.1-0ubuntu13) OpenJDK VM de servidor de 64 bits (build 14.0-b08, modo misto) class Tmp { public static void main(String[] args) { System.out.println(“1>>1 = “+(1>>1)); System.out.println(“1>>2 = “+(1>>2)); System.out.println(“1>>31 = “+(1>>31)); System.out.println(“1>>32 = […]

Adicione dois inteiros usando apenas operadores bit a bit?

Em C #, é possível realizar uma sum de dois inteiros de 32 bits sem usar coisas como if..else, loops etc? Isto é, pode ser feito usando apenas as operações bit a bit OR ( | ), AND ( & ), XOR ( ^ ), NOT ( ! ), Shift à esquerda ( << ) […]

Maneira mais rápida de fixar um valor real (fixo / ponto flutuante)?

Existe uma maneira mais eficiente de fixar números reais do que usar instruções if ou operadores ternários? Eu quero fazer isso para duplas e para uma implementação de 32-bit fixpoint (16.16). Eu não estou pedindo código que possa lidar com ambos os casos; eles serão tratados em funções separadas. Obviamente, posso fazer algo como: double […]

C / C ++ verificar se um bit está definido, ou seja, int variável

int temp = 0x5E; // in binary 0b1011110. Existe uma maneira de verificar se o bit 3 em temp é 1 ou 0 sem bit shift e masking. Só quero saber se há alguma function embutida para isso, ou sou forçada a escrever uma.

Manipulação de Bitfield em C

O problema clássico de testar e configurar bits individuais em um inteiro em C é talvez uma das habilidades de programação de nível intermediário mais comuns. Você define e testa com bitmasks simples, como unsigned int mask = 1<<11; if (value & mask) {….} // Test for the bit value |= mask; // set the […]

Brincadeira de bits: qual bit está definido?

Eu tenho um inteiro não assinado de 64 bits com exatamente 1 bit definido. Eu gostaria de atribuir um valor para cada um dos 64 valores possíveis (neste caso, os primos ímpares, então 0x1 corresponde a 3, 0x2 corresponde a 5, …, 0x8000000000000000 corresponde a 313). Parece que a melhor maneira seria converter 1 -> […]