求一个数的二进制表示方法(1305 P102)

逻辑是这样的:每次除以2,它的余数都是比2小的,只能为1或者0. Stack堆栈的装填方式为先进后出,这与10进制转化为2进制的方式是一直的,它也是由下向上依次来阅读的,所以可以转化为2进制。

核心代码:
Stack<Integer> stack = new Stack<>();
int N = 50;
while(N > 0) //执行的循环体
{
    stack.push(N % 2);
    N /= 2; // N = N / 2;
}

for(int d = 0 : N){
    stack.pop();
}



具体实现代码:

package chapter1.a3;

import edu.princeton.cs.algs4.Stack;
import edu.princeton.cs.algs4.StdIn;
import edu.princeton.cs.algs4.StdOut;

public class Example1305 {
//private static int N = 50;
public static void main(String [] args){
Stack<Integer> stack = new Stack<>();
int N = StdIn.readInt();
while (N > 0){
stack.push(N % 2);
N /= 2;
}
/*
写法一
*/
// for (int d : stack){
// StdOut.print(d);
// }


/*
写法二
*/
//int d = 0;
int n = stack.size();
//for(int i = 0; i < stack.size(); i ++){ 如果这里第二个参数为stack.size()
// 的话,他是一直会发生改变的,会随着pop()操作越来越小。
for (int i = 0; i < n; i ++){
StdOut.print(stack.pop());
}

StdOut.println();
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值