Here is a version demonstrating \AddEnumerateCounter
and using xintcore
for the arithmetic. This way you can start at any (positive) power of 2 you choose and nesting is no problem.

\documentclass{article}
\usepackage{enumitem,xintcore}
\AddEnumerateCounter*{\poweroftwo}{\internalpoweroftwoname}{1}
\newcommand{\poweroftwo}[1]{\xintiiPow{2}{\value{#1}}}
\begin{document}
\begin{enumerate}[label={\poweroftwo*},start={19}]
\item A
\item list
\item enumerated
\item with
\item powers
\item of
\item two
\item starting
\item at
\item the
\item initial
\item value
\item 5
\item 2
\item 4
\item 2
\item 8
\item 8
\end{enumerate}
\end{document}
You probably want to use this with leftmargin=*,widest*=38
.
I originally used the bigintcalc
package but @jfbu kindly pointed out that xintcore
is significantly faster. For bigintcalc
the syntax
\newcommand{\poweroftwo}[1]{\bigintcalcPow{2}{\number\value{#1}}}
with \number
is needed.
Note I have simplified the syntax from the enumitem
manual. We no longer need a helper macro, and can avoid @
in names, so do not have to encase in \makeatletter...\makeatother
. The second argument of \AddEnumerateCounter
looks like a macro, but is actually stripped of the leading \
to produce a character string to build internal names in enumitem
.