Quiero establecer un byte en el valor máximo o mínimo, si el valor que trato de asignar es mayor. ¿Hay una mejor manera de hacerlo, en lugar de verificar con declaraciones if?
ejemplo:
int[] arr = new int[128]; // assume int array is filled with random values byte[] arr2 = new byte[128]; for (int i = 0; i < arr.length; i++) { if (arr[i] > 127) { arr2[i] = 127; } else if (arr[i] < -128) { arr2[i] = -128; } else { arr2[i] = arr[i]; } }¿Hay alguna manera de reemplazar la instrucción if/else con operaciones bit a bit? ¿O hay una forma más inteligente/rápida de hacerlo?
Puede encadenar Math.min(int, int) y Math.max(int, int) . Me gusta,
arr2[i] = (byte) Math.min(127, Math.max(-128, arr[i])); Si arr[i] es menor que -128 , tomará -128 . Si el resultado de eso es mayor que 127 , tomará 127 . Que debería cubrir todos sus casos.