## digitalmars.D.learn - next power of 2

"ref2401" <refactor24 gmail.com> writes:
```is there any Phobos function to calculate the next power of 2 of
the specified number?
```
Oct 06 2012
Andrei Alexandrescu <SeeWebsiteForEmail erdani.org> writes:
```On 10/6/12 4:48 PM, ref2401 wrote:
is there any Phobos function to calculate the next power of 2 of the
specified number?

Use 1U << bsr(x).

http://dlang.org/phobos/core_bitop.html#bsr

Andrei
```
Oct 06 2012
Dmitry Olshansky <dmitry.olsh gmail.com> writes:
```On 07-Oct-12 00:48, ref2401 wrote:
is there any Phobos function to calculate the next power of 2 of the
specified number?

No though it's reinvented in a couple of places I think.

Anyway this should work for unsigned numbers:

import core.bitop;
T nextPow2(T)(T x){
return x == 0 ? 1 : 1^^(bsr(x)+1);
}

--
Dmitry Olshansky
```
Oct 06 2012
Dmitry Olshansky <dmitry.olsh gmail.com> writes:
```On 07-Oct-12 00:54, Dmitry Olshansky wrote:
On 07-Oct-12 00:48, ref2401 wrote:
is there any Phobos function to calculate the next power of 2 of the
specified number?

No though it's reinvented in a couple of places I think.

Anyway this should work for unsigned numbers:

import core.bitop;
T nextPow2(T)(T x){
return x == 0 ? 1 : 1^^(bsr(x)+1);
}

Yikes, 1<<(bsr(x)+1) or 2 ^^ (bsr(x)+1) ...
still haven't got used to 2^^x notation compared to shifts.

--
Dmitry Olshansky
```
Oct 06 2012
Andrei Alexandrescu <SeeWebsiteForEmail erdani.org> writes:
```On 10/6/12 4:57 PM, Dmitry Olshansky wrote:
On 07-Oct-12 00:54, Dmitry Olshansky wrote:
On 07-Oct-12 00:48, ref2401 wrote:
is there any Phobos function to calculate the next power of 2 of the
specified number?

No though it's reinvented in a couple of places I think.

Anyway this should work for unsigned numbers:

import core.bitop;
T nextPow2(T)(T x){
return x == 0 ? 1 : 1^^(bsr(x)+1);
}

Yikes, 1<<(bsr(x)+1) or 2 ^^ (bsr(x)+1) ...
still haven't got used to 2^^x notation compared to shifts.

That's right, apologies for my buggy suggestion and my suggestion of a
buggy suggestion :o).

Andrei
```
Oct 06 2012
Dmitry Olshansky <dmitry.olsh gmail.com> writes:
```On 07-Oct-12 00:58, Andrei Alexandrescu wrote:
On 10/6/12 4:57 PM, Dmitry Olshansky wrote:
On 07-Oct-12 00:54, Dmitry Olshansky wrote:
On 07-Oct-12 00:48, ref2401 wrote:
is there any Phobos function to calculate the next power of 2 of the
specified number?

No though it's reinvented in a couple of places I think.

Anyway this should work for unsigned numbers:

import core.bitop;
T nextPow2(T)(T x){
return x == 0 ? 1 : 1^^(bsr(x)+1);
}

Yikes, 1<<(bsr(x)+1) or 2 ^^ (bsr(x)+1) ...
still haven't got used to 2^^x notation compared to shifts.

That's right, apologies for my buggy suggestion and my suggestion of a
buggy suggestion :o).

Post of the day :)

--
Dmitry Olshansky
```
Oct 06 2012
Andrei Alexandrescu <SeeWebsiteForEmail erdani.org> writes:
```On 10/6/12 4:54 PM, Dmitry Olshansky wrote:
On 07-Oct-12 00:48, ref2401 wrote:
is there any Phobos function to calculate the next power of 2 of the
specified number?

No though it's reinvented in a couple of places I think.

Anyway this should work for unsigned numbers:

import core.bitop;
T nextPow2(T)(T x){
return x == 0 ? 1 : 1^^(bsr(x)+1);
}

That's right, apologies for my buggy suggestion.

Andrei
```
Oct 06 2012
"bearophile" <bearophileHUGS lycos.com> writes:
```On Saturday, 6 October 2012 at 21:00:57 UTC, ref2401 wrote:
is there any Phobos function to calculate the next power of 2
of the specified number?

See:
http://d.puremagic.com/issues/show_bug.cgi?id=6343

Bye,
bearophile
```
Oct 06 2012