[Algoritmo 04] Operación de bits

1. Convierte el número dado a binario

public class weiyunsuan {
    public static void main(String[] args) {
        //获取最大的正数
        zhuanhua(Integer.MAX_VALUE);
    }
    public static void zhuanhua(int a){
        //从能移动的最高位开始递减,相与后得出的结果就是从数据的最高位递减,这样便于将数据的二进制直接输出
        //1可以不左移,相与得到的结果就是数据a的最后一位的元素,即i == 0;
        for(int i = 31;i >= 0;i--){
            //通过将1不断左移,与传入的数据相与得出数据每个位置上的元素是0还是1
            System.out.print((a & (1 << i)) == 0 ? "0" : "1");
        }
        System.out.println();
    }
}

2. La diferencia entre >> y >>>

① Similitudes:

Para números positivos , no hay diferencia entre los dos. Algunos bits se mueven hacia la derecha y el bit de signo se llena con 0.

② Diferencias:

Para números negativos :

>> significa "desplazamiento a la derecha con signo", es decir, después de desplazarse a la derecha, el bit de signo se rellena con 1

>>>Indica "desplazamiento a la derecha sin signo", es decir, después de desplazarse a la derecha, el bit de signo se rellena con 0

3. Conversión mutua entre números positivos y negativos

int a = Integer.MAX_VALUE;
int b = -a;
int c = (~a + 1);
zhuanhua(a);
zhuanhua(b);
zhuanhua(c);
//由结果知:b与c的结果一致

Sea a un número positivo (número negativo), y b y c son números opuestos de a

b = -a;

c = (~a + 1);

El resultado es: b == c

4. El opuesto del menor número negativo es él mismo

int a = Integer.MIN_VALUE;
int b = -a;
int c = (~a + 1);
zhuanhua(a);
zhuanhua(b);
zhuanhua(c);

① El opuesto del número negativo más pequeño es su propia causa: el número negativo más pequeño sigue siendo él mismo después de invertirse y sumarse al entero

② Cualquier número positivo tiene su correspondiente número opuesto, pero los números negativos solo tienen números opuestos correspondientes uno a uno, excepto el número más pequeño.

La razón es que el rango binario es: (los números positivos son uno menos que los números negativos)

 5. El opuesto de 0 sigue siendo 0

 Después de que se niega 0 y se agrega uno, se desborda un bit, si el desbordamiento no existe, el resultado sigue siendo 0

Supongo que te gusta

Origin blog.csdn.net/qq_59942266/article/details/127662936
Recomendado
Clasificación