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