Java教程

理解十进制整数转二进制整数

本文主要是介绍理解十进制整数转二进制整数,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

《算法(第四版)》中的习题 1.3.5 中有这样一段代码:

Stack<Integer> s = new Stack<>();
while (N > 0) {
	s.push(N % 2);
	N = N / 2;
}
for (int d : s) System.out.print(d);
System.out.println();

其作用是打印十进制整数 N 的二进制表示。下面解释该算法背后的道理。

为简化问题,默认输入的整数为正。

二进制整数转十进制整数的过程如下:

\[(k_nk_{n-1}\dotsm k_1k_0)_2=k_n2^n+k_{n-1}2^{n-1}+\dotsm+k_12^1+k_02^0 \]

对于十进制整数 \((S)_{10}\),令:

\[(S)_{10}=k_n2^n+k_{n-1}2^{n-1}+\dotsm+k_12^1+k_02^0 \]

要求 \((S)_{10}\) 的二进制表示,即求 \(k_0\sim k_n\)。而:

\[\frac{(S)_{10}}{2^1}=k_n2^{n-1}+k_{n-1}2^{n-2}+\dotsm+k_1\ \ 余\ k_0\\ \ \\ \frac{(S)_{10}}{2^2}=k_n2^{n-2}+k_{n-1}2^{n-3}+\dotsm+k_1\ \ 余\ k_1 \\.\\.\\.\\ \frac{(S)_{10}}{2^n}=k_n\ \ 余\ k_{n-1}\\ \ \\ \frac{(S)_{10}}{2^{n+1}}=0\ \ 余\ k_n \]

按以上过程可写得程序。

这篇关于理解十进制整数转二进制整数的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!