华为机试:求int型数据在内存中存储时1的个数、 取近似值

来源:互联网 发布:webdriver 执行js 编辑:程序博客网 时间:2024/05/22 09:05

1.求int型数据在内存中存储时1的个数

题目描述

输入一个int型的正整数,计算出该int型数据在内存中存储时1的个数。

输入描述:

输出描述:

示例1

输入 5

输出 2

 输入一个整数(int类型),这个数转换成2进制后,输出1的个数

import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner input=new Scanner(System.in);int a=input.nextInt();System.out.println(getNumber(a));}//方法1:通过将整数a转成二进制的char数组,按位判断是否为1,最后返回count值public static int getNumber(int a){//利用Integer的toBinaryString()方法char[] ch=Integer.toBinaryString(a).toCharArray();int count=0;for (int i = 0; i < ch.length; i++) {if(ch[i]=='1'){count++;}}return count;}//方法2: 通过按位&来统计1的个数public static int getNumber_1(int a){int count=0;while (a!=0){            count++;            a&=(a-1); //判断二进制中有多少个1        }return count;}}

2.取近似值

输入描述:

输入一个正浮点数值

输出描述:

输出该数值的近似整数值

示例1

输入

5.5

输出

6
import java.math.BigDecimal;import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner input=new Scanner(System.in);float a=input.nextFloat();System.out.println(approximate3(a));}//方法1:利用(int)a向下取整特性public static int approximate(float a){float c=a-(int)a;if(c>=0.5)return (int)a+1;elsereturn (int)a;}    //方法2:直接用三目运算,和上面原理一样    public static int approximate1(float a){    return  (a-(int)a)>=0.5?(int)a+1:(int)a;}        //方法3:利用BigDecimal来求解    public static BigDecimal approximate2(float a){    // BigDecimal的ROUND_HALF_UP方法是四舍五入方法,类似于Math的round方法    BigDecimal i=new BigDecimal(a).setScale(0, BigDecimal.ROUND_HALF_UP);    return i;    }        //方法4:通过Math的内置方法round来实现    public static int approximate3(float a){    return Math.round(a);    }}


阅读全文
0 0
原创粉丝点击