Java Ceil ceilingPowerOf2(int n)

Here you can find the source of ceilingPowerOf2(int n)

Description

Computes the ceiling power of 2 within the range [1, 2^30].

License

Apache License

Parameter

Parameter Description
n The input argument.

Return

the ceiling power of 2.

Declaration

public static int ceilingPowerOf2(int n) 

Method Source Code

//package com.java2s;
/*/*  ww  w.j ava  2 s  .  co  m*/
 * Copyright 2015, Yahoo! Inc.
 * Licensed under the terms of the Apache License 2.0. See LICENSE file at the project root for terms.
 */

public class Main {
    private static final int IntTopPwrOf2 = 1 << 30;
    private static final int MaxIntShifts = 16;

    /**
     * Computes the ceiling power of 2 within the range [1, 2^30]. This is the smallest positive power
     * of 2 that equal to or greater than the given n. This algorithm finds the ceiling in a maximum
     * of lg(32)=5 iterations. <br>
     * For:
     * <ul>
     * <li>n &le; 1: returns 1</li>
     * <li>2^30 &le; n &le; 2^31 -1 : returns 2^30</li>
     * <li>n == a power of 2 : returns n</li>
     * <li>otherwise returns the smallest power of 2 greater than n</li>
     * </ul>
     * 
     * @param n The input argument.
     * @return the ceiling power of 2.
     */
    public static int ceilingPowerOf2(int n) {
        if (n <= 1) {
            return 1;
        }
        if (n >= IntTopPwrOf2) {
            return IntTopPwrOf2;
        }
        n--;
        for (int i = 1; i <= MaxIntShifts; i <<= 1) {
            int m = (n | (n >> i));
            if (n == m) {
                break;
            }
            n = m;
        }
        return ++n;
    }
}

Related

  1. ceilingAbs(double a)
  2. ceilingHalf(int num)
  3. ceilingNextPowerOfTwo(final int x)
  4. ceilingPow2(int n)
  5. ceilingPowerOf2(final int n)
  6. ceilingPowerOfTwo(final int a)
  7. ceilingPowerOfTwo(int value)
  8. ceilInt(Double d, double intv)
  9. ceilInt(final double x)