The width of each column in a tabular environment can be specified in the argument at the beginning of the environment. The letters l, c and r are used to declare left aligned, centered and right aligned columns respectively, but one can also use the letter p, which takes a length as an argument to specify the width of the column. With the array package, one can also use the similar commands m and b. The difference between p, m and b is the vertical alignment of the text; use p to align at the top of the cell, m in the middle and b at the bottom. See the LaTeX wikibook for a more detailed explanation. The answer here can also be useful, as it introduces a way to define horizontally centered columns with specified width.
Taking your example, the c arguments can be replaced by ms to give the following result.
\documentclass{article}
\usepackage{multicol, multirow, array}
\begin{document}
\begin{center}
\begin{tabular}{|m{2ex}m{2ex}m{2ex}|m{2ex}|}
\hline
2 & 1 & 4 & 10 \\
0 & 5 & -1 & 6 \\
\hline
3 & 7 & -8 & 9 \\
\hline
\end{tabular}
=
\begin{tabular}{|m{2ex}m{2ex}m{2ex}|m{2ex}|}
\hline
&\multirow{2}{*}{$A$}&&\multirow{2}{*}{$\hat{b}$} \\
&&& \\ \hline
&$\bar{c}$&&$d$ \\ \hline
\end{tabular}
\end{center}
\end{document}

multirowand thearraypackages? – Vincent Dec 04 '19 at 20:31