如果值不能匹配,则设置字节

qc6wkl3g  于 2021-07-03  发布在  Java
关注(0)|答案(1)|浏览(454)

我想设置一个字节的最大值或最小值,如果我试图分配的值更大。有没有更好的方法,而不是用if语句检查呢?
例子:

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];
  }
}

有没有办法用逐位运算替换if/else语句?或者有没有更聪明/更快的方法?

lrpiutwd

lrpiutwd1#

你可以锁链 Math.min(int, int) 以及 Math.max(int, int) 电话。比如,

arr2[i] = (byte) Math.min(127, Math.max(-128, arr[i]));

如果 arr[i] 小于 -128 那得花点时间 -128 . 如果结果大于 127 这需要时间 127 . 应该包括你所有的案子。

相关问题