华为机试题---统计一个数字转为二进制0和1的个数

一、问题描述

功能描述:统计一个数字转为二进制后,0和1的个数,组成数组返回 输入:6 输出:{1,2}

二、算法分析

   要把一个数字转为二进制就得为这个数字不断取余数 ,如果能整除则为0 ,否则为1.

三、算法

/**
	 * Gets array including zerocount and onecount of input data.
	 * @param data
	 * @return
	 */
	public int[] getNumber(int data) {
		int oneCount = 0, zeroCount = 0;
		while (data > 0) {
			if (data % 2 == 0) {
				zeroCount++;
			} else {
				oneCount++;
			}
			data = data / 2;
		}
		int[] result = {zeroCount, oneCount };
		return result;
	}
四、测试

package com.albertshao.csi.interview;

/**
 * 功能描述:统计一个数字转为二进制后,0和1的个数,组成数组返回 输入:6 输出:{1,2}
 * @author albertshao
 * 
 */
public class Main16 {
	/**
	 * Gets array including zerocount and onecount of input data.
	 * @param data
	 * @return
	 */
	public int[] getNumber(int data) {
		int oneCount = 0, zeroCount = 0;
		while (data > 0) {
			if (data % 2 == 0) {
				zeroCount++;
			} else {
				oneCount++;
			}
			data = data / 2;
		}
		int[] result = {zeroCount, oneCount };
		return result;
	}

	public static void main(String[] args) {
		Main16 m = new Main16();
		int data = 6;
		int[] result = m.getNumber(data);
		for (int i = 0; i < result.length; i++) {
			System.out.print(result[i]);
		}
	}

}
运行结果

12




你可能感兴趣的:(华为,机试)