Uma mudança de aritmética esquerda de uma posição transfere tudo para a esquerda por apenas um. É o mesmo que a mudança lógica esquerda. Uma mudança de aritmética direita de uma posição muda tudo para a direita através de um. Ao multiplicar ou dividir um número inteiro, as funções de mudança aritmética podem ser usadas. Multiplicar um número por 2n, no qual n representa o número de locais de bits trocados, é o resultado de um método de mudança de esquerda. Divida um número por 2n é o resultado de um método de mudança certo, onde n representa o número de locais de bits comutados.
Este artigo demonstrará algumas técnicas usando funções de mudança de bit netwise em c.
Mova o número inteiro para a esquerda usando o << Operator
Cada idioma inclui técnicas de mudança bit -butter. Para avaliar adequadamente o impacto desses métodos, introduziríamos a função binária na situação anterior, que exibe a forma binária do número fornecido.
Este método é construído apenas para operar com números de 32 bits. O código a seguir ilustra uma mudança de quatro ímãs e apresenta os valores numéricos correspondentes:
#incluir
#incluir
binário vazio (num não assinado)
j não assinado;
para (j = 1 < 0; j /= 4)
(num & j) ? printf ("1"): printf ("0");
int main (int argc, char *argv [])
int num1 = 456;
binário (num1); printf (": %d \ n", num1);
Num1 <<= 4;
binário (num1); printf (": %d \ n", num1);
saída (exit_success);
Primeiro, apresentamos duas bibliotecas e . Na próxima etapa, definimos a função binária (). Enquanto isso, declaramos um parâmetro "num não assinado" para a função binária (). Utilizamos um loop para. Aqui, inicializamos uma variável para o loop. O loop itera até que o valor atinja 31. Agora, empregamos a função principal () fora do corpo da função binária (). Uma variável com um tipo de dados inteiro é inicializada. Da mesma forma, criamos um construtor com um tipo de dados de caracteres.
Declaramos uma variável "num1" e especificamos seu valor. Em seguida, esse valor é fornecido como um argumento para a função binária (). A função printf () é usada para mostrar o valor binário do número definido. O << operator is applied to the value of the variable “num1”. Therefore, it is used to adjust the digits to the left. Now, the binary() and print() methods are utilized to print the result after shifting the numbers.
Utilize o turno esquerdo para multiplicar um número com quatro:
Vamos utilizar o turno esquerdo << more effective operation to accomplish the multiplication by four. It's important to note that there is no distinction between the logical and arithmetic shifts while moving left.
Uma mudança de posição específica leva à multiplicação; Consequentemente, podemos mudar para qualquer lugar para adquirir a multiplicação apropriada.
#incluir
#incluir
binário vazio (num não assinado)
K não assinado;
para (k = 1 << 31; k > 0; k /= 4)
(num & k) ? printf ("1"): printf ("0");
int main (int argc, char *argv [])
int num1 = 678;
printf ("%d \ n", num1);
Num1 <<= 1;
printf ("%d x 4 \ n", num1);
saída (exit_success);
No início do programa, dois arquivos de cabeçalho e estão incluídos logo antes da declaração do método binário (). Dentro da função binária () para loop está sendo usada, a variável 'k' é inicializada aqui. A função printf () também é usada para imprimir o valor na forma de 1s e 0s. Além disso, definimos a função principal (). Esta função possui dois parâmetros, incluindo uma variável e um construtor. O tipo de dados dessa variável e construtor não é idêntico.
Além disso, criamos outra variável e definimos o valor dessa variável. Aplicamos uma função print () para demonstrar o valor binário real do número fornecido. Na próxima etapa, utilizamos o << operator to move the digits to the left of the defined value. Once again, the printf() method gets the output after shifting the digits and multiplying the value by 4. In this way, we have to end the code.
Mova os números inteiros para a direita, use o operador >>
Vale a pena mencionar que números assinados e não assinados são expressos de maneira diferente. Os assinados, em particular, são interpretados como dois números inteiros complementares. Portanto, o tipo de valor negativo mais prevalente é 1, que é chamado de bit assinado, enquanto números positivos começam com 0. Como resultado, se transferirmos analiticamente os dígitos negativos corretamente, removemos o sinal e obtemos o número positivo. 2
Assim, devemos distinguir entre mudanças lógicas e aritméticas, com o primeiro mantendo sua parte mais importante. Aqui, realizamos a mudança aritmética e mantemos o valor negativo do número, como demonstrado no resultado de exemplo a seguir:
#incluir
#incluir
binário vazio (num não assinado)
l não assinado;
for (l = 1> = 5;
binário (num2); printf (": %d \ n", num2);
saída (exit_success);
Aqui, temos que integrar as bibliotecas necessárias e . A função binária () é chamada na próxima etapa. Além disso, introduzimos um argumento de “NUM não assinado” dentro desse método binário (). Usamos o loop e dentro para o loop, temos que definir uma variável. Usamos a função principal () fora do corpo da função binária (). Fazemos um construtor com um tipo de dados de caracteres e declaramos uma variável com um tipo de dados inteiro.
Além disso, uma variável chamada "num1" é inicializada e alocada o valor. Este valor é então passado para o método binário () como um parâmetro. A função printf () exibe o valor binário de um determinado número. O operador >> é usado para mover os dígitos para a direita, aplicando -o ao valor da variável "num1". Desde que muda os dígitos, as funções binárias () e printf () foram aplicadas para imprimir o resultado. Então o método Exit () é usado para encerrar o programa.
Conclusão
Discutimos as especificidades da mudança aritmética e lógica na linguagem C. Observamos como mover os números inteiros para a direita com a ajuda do operador >> e para a esquerda usando o << operator. Here, we also use the left shift to multiply a number.