/* * Copyright (c) 2013-2017 Cinchapi Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.cinchapi.concourse.util; /** * A collection of integer related utility functions that are not found in the * {@link Integer} or {@link Ints} classes. * * @author Jeff Nelson */ public final class Integers { /** * Given an integer {@code n}, round it up to the next power of 2. * <p> * Props for this technique goes to Sean Eron Anderson courtesy of <a * href="https://graphics.stanford.edu/~seander/bithacks.html" * >https://graphics.stanford.edu/~seander/bithacks.html</a> * </p> * * @param n * @return the next power of 2 for {@code n}. */ public static int nextPowerOfTwo(int n) { --n; n |= n >> 1; n |= n >> 2; n |= n >> 4; n |= n >> 8; n |= n >> 16; ++n; return n; } /** * Return the integer casted average of all the {@code ints}. * * @param ints * @return the average */ public static int avg(int... ints) { int sum = 0; int length = ints.length; for (int i = 0; i < length; ++i) { sum += ints[i]; } return sum / length; } private Integers() {/* noop */} }