Noções básicas de Java: operadores de turno

O artigo anterior abordou os operadores condicionais e este artigo abrange os operadores de turno.

visão geral

Em Java, existem os seguintes operadores de deslocamento:

operador exemplo de entrada explicar
<< x << y Desloca os bits em x para a esquerda em y bits, preenchendo a extremidade direita com 0s.
>> x >> y Desloca os bits em x para a direita em y bits, preenchendo à esquerda com o mesmo sinal do bit mais significativo no momento.
>>> x >>> y Desloca os bits em x para a direita em y bits, preenchendo a esquerda com 0s.

Nota: Os operadores Shift são usados ​​em valores inteiros.

<<

<< Desloca os bits do operando esquerdo para a esquerda pelos bits do operando direito, deslocar para a esquerda significa multiplicar o valor original por 2 à potência de deslocamento.

gramática:

value<<position
  • value representa o valor binário no qual a operação de deslocamento será executada
  • position refere-se à posição especificada onde ocorre um deslocamento à esquerda, deslocando os bits para a esquerda nessa posição

Por exemplo:

O número binário do número 5 é 101, e deslocando um bit para a esquerda torna-se 1010, que é 10.

Exemplo de código:

package com.test.javaroads.operator;

/**
 * @author: javaroads
 * @date: 2022/12/5 11:27
 * @description:
 */
public class Nine {

    public static void main(String[] args) {

        // 数字是5
        int num = 5;

        // 向左移一位
        int result = num << 1;

        // 开始执行左移操作
        System.out.println("左移操作后:" + result);
    }
}

Resultados do:

Vamos explicar graficamente:

>>

Ao contrário de <<, >> desloca os bits do operando esquerdo para a direita pelos bits do operando direito. Deslocamento à direita significa dividir o valor original pela potência de deslocamento de 2. O bit mais à esquerda tem o mesmo sinal do mais significativo bit. A razão para inserir o mesmo sinal como o bit mais significativo é porque o bit mais significativo de um número negativo é 1 na representação de complemento de 2, deslocando o número decimal -4 com o bit mais alto de 1 para a direita e adicionando 0 à esquerda do resultado da operação está incorreto.

Por exemplo:

O número binário do número 32 é 100000, deslocando dois bits para a direita torna-se 1000, que é 8.

Exemplo de código:

package com.test.javaroads.operator;

/**
 * @author: javaroads
 * @date: 2022/12/5 16:25
 * @description:
 */
public class Ten {

    public static void main(String[] args) {

        // 数字是32
        int num = 32;

        // 向右移两位
        int result = num >> 2;

        // 开始执行右移操作
        System.out.println("右移操作后:" + result);
    }
}

Resultados do:

Vamos explicar graficamente:

O exemplo acima demonstra o caso de um número positivo. Se for um número negativo, por exemplo -32 >> 2, adivinhe qual é o resultado final?

a resposta é:

>>>

Mova o bit do operando esquerdo para a direita pelo bit do operando direito. >>> Não há distinção entre positivo e negativo no resultado da operação. O operador >>> é usado para operações sem distinção de sinais, também conhecidas como "operador de deslocamento à direita não assinado".

No operador de deslocamento à direita sem sinal, não há diferença de >> no caso de números positivos. No caso de números negativos, 0 será preenchido na extremidade esquerda. Vamos demonstrar com código:

package com.test.javaroads.operator;

/**
 * @author: javaroads
 * @date: 2022/12/5 16:25
 * @description:
 */
public class Ten {

    public static void main(String[] args) {

        // 数字是32
        int num1 = 32;

        // 数字是-32
        int num2 = -32;

        // 向右移两位
        int result1 = num1 >>> 2;
        int result2 = num2 >>> 2;

        // 开始执行右移操作
        System.out.println(num1 + "右移操作后:" + result1);
        System.out.println(num2 + "右移操作后:" + result2);
    }
}

Resultados do:

Pode-se ver que 32 positivo é fácil de entender, então como é o processo -32?

De acordo com minha descrição acima, vamos fazer um desenho para explicar:

De acordo com a imagem acima, deve ser fácil de entender!

Acho que você gosta

Origin blog.csdn.net/weixin_43025343/article/details/132236308
Recomendado
Clasificación