Here you can find the source of roundUpPow2(int x)
Parameter | Description |
---|---|
x | a parameter |
public static int roundUpPow2(int x)
//package com.java2s; /*/*from w w w . j a v a 2 s .c o m*/ * Copyright (C) 2012 CyborgDev <cyborg@alta189.com> * * This file is part of Cyborg * * Cyborg is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * Cyborg is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this. If not, see <http://www.gnu.org/licenses/>. */ public class Main { /** * Rounds an integer up to the next power of 2. * @param x * @return the lowest power of 2 greater or equal to x */ public static int roundUpPow2(int x) { if (x <= 0) { return 1; } else if (x > 0x40000000) { throw new IllegalArgumentException( "Rounding " + x + " to the next highest power of two would exceed the int range"); } else { x--; x |= x >> 1; x |= x >> 2; x |= x >> 4; x |= x >> 8; x |= x >> 16; x++; return x; } } }