java.lang.Long.highestOneBit() es un método incorporado en Java que primero convierte el número a binario, luego busca el primer bit establecido desde la izquierda, luego restablece el resto de los bits y luego devuelve el valor. En un lenguaje simple, si la expresión binaria de un número contiene un mínimo de un solo bit establecido, devuelve 2^ (última posición de bit establecida desde la derecha-1). Si la expresión binaria no contiene ningún bit establecido, devuelve 0.
Sintaxis:
public static long highestOneBit(long num) Parameters: num - the number passed Returns: long value by only considering highest 1 bit in the argument.
Ejemplos:
Input : 9 Output : 8 Explanation: Binary Representation = 1001 It considers highest bit(at 4th from right) and now reset rest of the bits i.e. 1000 so result = 1000 i.e. 8 or in simple terms, the last set bit position from right is at position 4, hence 2^3=8 Input : 45 Output : 32
El siguiente programa ilustra la función java.lang.Long.highestOneBit():
Programa 1:
// Java program that demonstrates the use of // Long.highestOneBit() function // include lang package import java.lang.*; public class GFG { public static void main(String[] args) { long l = 9; // returns a long value with at most a // single one-bit, in the position // of the highest-order ("rightmost") // one-bit in the specified long value. System.out.println("highest one bit = " + Long.highestOneBit(l)); l = 45; System.out.println("highest one bit = " + Long.highestOneBit(l)); } }
Producción:
highest one bit = 8 highest one bit = 32
Nota: el bit más alto del número negativo siempre será el mismo en todos los casos, por lo tanto, independientemente del número, la salida será la misma para cada número negativo.
Programa 2: El siguiente programa demuestra el uso de la función cuando se pasa un número negativo.
// java program that demonstrates the use of // Long.highestOneBit() function // negative number // include lang package import java.lang.*; public class GFG { public static void main(String[] args) { long l = -15; // prints the binary of a negative expression System.out.println("Binary = " + Long.toBinaryString(l)); // returns a long value with at // most a single one-bit, in the position // of the highest-order ("rightmost") // one-bit in the specified int value. System.out.println("Highest one bit = " + Long.highestOneBit(l)); } }
Producción:
Binary = 1111111111111111111111111111111111111111111111111111111111110001 Highest one bit = -9223372036854775808
Devuelve un mensaje de error cuando se pasa un valor de string decimal como argumento.
Programa 3: cuando se pasa un valor decimal en el argumento.
// java program that demonstrates the // Long.highestOneBit() function // decimal value in argument // include lang package import java.lang.*; public class GFG { public static void main(String[] args) { System.out.println("highest one bit = " + Long.highestOneBit(12.34)); } }
Producción:
prog.java:13: error: incompatible types: possible lossy conversion from double to long System.out.println("highest one bit = " + Long.highestOneBit(12.34));
Programa 3: cuando se pasa un valor de string en el argumento.
// java program that demonstrates the // Long.highestOneBit() function // string value in argument // include lang package import java.lang.*; public class GFG { public static void main(String[] args) { System.out.println("highest one bit = " + Long.highestOneBit("12")); } }
Producción:
prog.java:13: error: incompatible types: String cannot be converted to long System.out.println("highest one bit = " + Long.highestOneBit("12"));