UPDATE: Linear realization.
\documentclass[border=7pt,10pt]{standalone}
\usepackage{tikz,ifthen}
\usetikzlibrary{positioning,calc}
\begin{document}
\pgfmathsetmacro{\Rmin}{1.2}
\pgfmathsetmacro{\DeltaR}{0.5}
\pgfmathsetmacro{\StartAng}{180}
\xdef\Lst{
{0 , 0 , 0 , 0},
{0 , 0 , 0 , 1},
{0 , 0 , 1 , 0},
{0 , 0 , 1 , 1},
{0 , 1 , 0 , 0},
{0 , 1 , 0 , 1},
{0 , 1 , 1 , 0},
{0 , 1 , 1 , 1},
{1 , 0 , 0 , 0},
{1 , 0 , 0 , 1},
{1 , 0 , 1 , 0},
{1 , 0 , 1 , 1},
{1 , 1 , 0 , 0},
{1 , 1 , 0 , 1},
{1 , 1 , 1, 0},
{1 , 1 , 1, 1}%
}
\begin{tikzpicture}
% first count the number of elements
\foreach \cc [count=\ci] in \Lst {\xdef\Ntot{\ci}}
% now draw
\foreach \cc [count=\ci] in \Lst {
\foreach \nn [count=\ni] in \cc {
\ifthenelse{\nn>0} % since you are working with integers, you could also
{\def\mycol{red}} % use \ifnum here
{\def\mycol{white}} % which would spare you from loading ifthenelse
\draw[fill=\mycol] (\StartAng+\ci*360/\Ntot:\Rmin+\ni*\DeltaR)
arc(\StartAng+\ci*360/\Ntot:{\StartAng+(\ci+1)*360/\Ntot}:\Rmin+\ni*\DeltaR)
-- ({\StartAng+(\ci+1)*360/\Ntot}:{\Rmin+(\ni+1)*\DeltaR})
arc({\StartAng+(\ci+1)*360/\Ntot}:\StartAng+\ci*360/\Ntot:{\Rmin+(\ni+1)*\DeltaR}) -- cycle;
\ifnum \ci=1
\pgfmathtruncatemacro{\Ni}{\ni-1}
\node[font=\small] at ({\StartAng+(\ci+0.5)*360/\Ntot}:{\Rmin+(\ni+0.5)*\DeltaR})
{\Ni};
\fi
\pgfmathsetmacro{\Rmax}{\Rmin+\ni*\DeltaR+\DeltaR}
\xdef\Rmax{\Rmax}
}
\pgfmathsetmacro{\NN}{int(\ci-1)}
\node[anchor={\StartAng+180+(\ci+0.5)*360/\Ntot}] at ({\StartAng+(\ci+0.5)*360/\Ntot}:\Rmax){\footnotesize \NN};
}
\end{tikzpicture}
\xdef\Lst{{0 , 0 , 0 , 0},
{0 , 0 , 0 , 1},
{0 , 0 , 1 , 1},
{0 , 0 , 1 , 0},
{0 , 1 , 1 , 0},
{0 , 1 , 1 , 1},
{0 , 1 , 0 , 1},
{0 , 1 , 0 , 0},
{1 , 1 , 0 , 0},
{1 , 1 , 0 , 1},
{1 , 1 , 1, 1},
{1 , 1 , 1, 0},
{1 , 0 , 1 , 0},
{1 , 0 , 1 , 1},
{1 , 0 , 0 , 1},
{1 , 0 , 0 , 0}%
}
\begin{tikzpicture}
% first count the number of elements
\foreach \cc [count=\ci] in \Lst {\xdef\Ntot{\ci}}
% now draw
\foreach \cc [count=\ci] in \Lst {
\foreach \nn [count=\ni] in \cc {
\ifthenelse{\nn>0} % since you are working with integers, you could also
{\def\mycol{red}} % use \ifnum here
{\def\mycol{white}} % which would spare you from loading ifthenelse
\draw[fill=\mycol] (\StartAng+\ci*360/\Ntot:\Rmin+\ni*\DeltaR)
arc(\StartAng+\ci*360/\Ntot:{\StartAng+(\ci+1)*360/\Ntot}:\Rmin+\ni*\DeltaR)
-- ({\StartAng+(\ci+1)*360/\Ntot}:{\Rmin+(\ni+1)*\DeltaR})
arc({\StartAng+(\ci+1)*360/\Ntot}:\StartAng+\ci*360/\Ntot:{\Rmin+(\ni+1)*\DeltaR}) -- cycle;
\ifnum \ci=1
\pgfmathtruncatemacro{\Ni}{\ni-1}
\node[font=\small] at ({\StartAng+(\ci+0.5)*360/\Ntot}:{\Rmin+(\ni+0.5)*\DeltaR})
{\Ni};
\fi
\pgfmathsetmacro{\Rmax}{\Rmin+\ni*\DeltaR+\DeltaR}
\xdef\Rmax{\Rmax}
}
\pgfmathsetmacro{\NN}{int(\ci-1)}
\node[anchor={\StartAng+180+(\ci+0.5)*360/\Ntot}] at ({\StartAng+(\ci+0.5)*360/\Ntot}:\Rmax){\footnotesize \NN};
}
\end{tikzpicture}
\end{document}

Of course, you could turn this into a macro that processes the list. Please let me know if you have problems doing that.
ORIGINAL ANSWER: I do not blame you at all if you do not take this answer seriously because it is just for fun. (Given that, it works surprisingly well, I'd say. ;-) EDIT: Fixed the sizes in radial directions.
\documentclass[border=7pt,10pt]{standalone}
\usepackage{tikz,ifthen}
\usetikzlibrary{positioning,calc}
\usepgfmodule{nonlineartransformations}
\makeatletter
% from https://tex.stackexchange.com/a/434247/121799
\tikzdeclarecoordinatesystem{polar}{
\tikz@scan@one@point\relax(#1)
\polartransformation
}
% from the pgfmanual
\def\polartransformation{% from the pgfmanual section 103.4.2
\pgfmathsincos@{\pgf@sys@tonumber\pgf@x}%
\pgf@x=\pgfmathresultx\pgf@y%
\pgf@y=\pgfmathresulty\pgf@y%
} % note: the following should work with arbitrary (nonlinear) transformations
\makeatother
\begin{document}
\begin{tikzpicture}
\begin{scope}[transform shape nonlinear=true]
\pgftransformnonlinear{\polartransformation}
\foreach \cc [count=\ci] in {
{0 , 0 , 0 , 0},
{0 , 0 , 0 , 1},
{0 , 0 , 1 , 0},
{0 , 0 , 1 , 1},
{0 , 1 , 0 , 0},
{0 , 1 , 0 , 1},
{0 , 1 , 1 , 0},
{0 , 1 , 1 , 1},
{1 , 0 , 0 , 0},
{1 , 0 , 0 , 1},
{1 , 0 , 1 , 0},
{1 , 0 , 1 , 1},
{1 , 1 , 0 , 0},
{1 , 1 , 0 , 1},
{1 , 1 , 1, 0},
{1 , 1 , 1, 1}%
}{
\foreach \nn [count=\ni] in \cc {
\ifthenelse{\nn>0}
{\def\mycol{red}}
{\def\mycol{white}}
\node[below right= \ni em and 2.25*\ci em,fill=\mycol,inner sep=0,minimum
width=2.25em,minimum height=1em,draw](n-\ci-\ni){ };
}
\pgfmathsetmacro{\NN}{int(\ci-1)}
\node[below=0em of n-\ci-4]{\footnotesize \NN};
}
\end{scope}
\end{tikzpicture}
\begin{tikzpicture}
\begin{scope}[transform shape nonlinear=true]
\pgftransformnonlinear{\polartransformation}
\foreach \cc [count=\ci] in {
{0 , 0 , 0 , 0},
{0 , 0 , 0 , 1},
{0 , 0 , 1 , 1},
{0 , 0 , 1 , 0},
{0 , 1 , 1 , 0},
{0 , 1 , 1 , 1},
{0 , 1 , 0 , 1},
{0 , 1 , 0 , 0},
{1 , 1 , 0 , 0},
{1 , 1 , 0 , 1},
{1 , 1 , 1, 1},
{1 , 1 , 1, 0},
{1 , 0 , 1 , 0},
{1 , 0 , 1 , 1},
{1 , 0 , 0 , 1},
{1 , 0 , 0 , 0}%
}{
\foreach \nn [count=\ni] in \cc {
\ifthenelse{\nn>0}
{\def\mycol{red}}
{\def\mycol{white}}
\node[below right= \ni em and 2.25*\ci em,fill=\mycol,inner sep=0,minimum
width=2.25em,minimum height=1em,draw](n-\ci-\ni){ };
}
\pgfmathsetmacro{\NN}{int(\ci-1)}
\node[below=0em of n-\ci-4]{\footnotesize \NN};
}
\end{scope}
\end{tikzpicture}
\end{document}

\mycolasevaluate=\nn as \mycol using {ifthenelse(\nn,"red","white")}inside the\foreachoptions. Then you won't need theifthenpackage, even if the list contains trailing decimals. – Max Aug 30 '18 at 06:56bin, see p.936 of the pgfmanual. You can then access the digits withxstringmethods, I think. There are also methods to add leading zeros, see e.g. here. That is, take a number, convert it to a binary withbin, add leading zeros, and then access the digits withxstringmethods is the way I would go. Could of course well be that this is already done somewhere. – Aug 30 '18 at 18:29