如果值不适合则设置字节
set byte if value cant fit
我想将一个字节设置为最大值或最小值,如果我尝试分配的值更大的话。有没有更好的方法来代替使用 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语句?
还是有 smarter/faster 方法来做到这一点?
您可以链接 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
。这应该涵盖您的所有案例。
我想将一个字节设置为最大值或最小值,如果我尝试分配的值更大的话。有没有更好的方法来代替使用 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语句? 还是有 smarter/faster 方法来做到这一点?
您可以链接 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
。这应该涵盖您的所有案例。