当N为50时下面这段代码会打印什么?从较高的抽象层次描述给定正整数N时这段代码的行为。
Stack<Integer> stack = new Stack<Integer>(); while (n > 0) { stack.push(n % 2); n = n / 2; } for (int d : stack) { System.out.print(d); } System.out.println()
n % 2得到n的二进制最低位上的值,0或者1。故上述代码就是将n的二进制位数值依次入栈,然后从栈顶将出输出,即为n的二进制表示。
测试代码:
/** * Description : * Author : mn@furzoom.com * Date : Sep 28, 2016 4:12:17 PM * Copyright (c) 2013-2016, http://furzoom.com All Rights Reserved. */ package com.furzoom.lab.algs.ch103; /** * ClassName : E10305 <br> * Function : TODO ADD FUNCTION. <br> * date : Sep 28, 2016 4:12:17 PM <br> * * @version */ public class E10305 { public static void main(String[] args) { int n = 50; Stack<Integer> stack = new Stack<Integer>(); while (n > 0) { stack.push(n % 2); n = n / 2; } for (int d : stack) { System.out.print(d); } System.out.println(); } }输出:
110010