(一)求 int 型数据在内存中存储时 1 的个数

题目:求 int 型数据在内存中存储时 1 的个数

描述:输入一个 int 型数据,计算出该 int 型数据在内存中存储时 1 的个数

运行时间限制: 10 sec

内存限制:128 MByte

输入:输入一个整数(int 类型)

输出:这个数转换成2进制后,输出 1 的个数

 1 #include <stdio.h>
 2
 3 int GetCount(int num)
 4 {
 5     /* 功能实现 */
 6     int ret = 0;
 7
 8     while (num)
 9     {
10         num &= (num - 1);
11         ret++;
12     }
13
14     return ret;
15 }
16
17 int main()
18 {
19     int num;
20     int ret;
21
22     printf_s("Please input a num:");
23     scanf_s("%d", &num);
24
25     ret = GetCount(num);
26     printf("The number of one is %d\n", ret);
27     return 0;
28 }

原文地址:https://www.cnblogs.com/kele-dad/p/8127642.html

时间: 2024-10-09 23:29:43

(一)求 int 型数据在内存中存储时 1 的个数的相关文章

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

1.求int型数据在内存中存储时1的个数 输入一个int型数据,计算出该int型数据在内存中存储时1的个数. 我们非常easy想到例如以下方法: #include <iostream> using namespace std; int main() { int n,cnt=0; cin>>n; while(n) { if(n%2==1) cnt++; n=n/2; } cout<<cnt<<endl; return 0; } 在对代码进行測试时输入负数无法得

[NewCoder]求int型正整数在内存中存储时1的个数

输入一个int型的正整数,计算出该int型数据在内存中存储时1的个数. 输入描述: 输入一个整数(int类型) 输出描述: 这个数转换成2进制后,输出1的个数  输入例子:5  输出例子:2 import java.util.*; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int num = 0; S

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

/* 015-求int型数据在内存中存储时1的个数 题目描述 输入一个int型数据,计算出该int型数据在内存中存储时1的个数. 输入描述:  输入一个整数(int类型) 输出描述:  这个数转换成2进制后,输出1的个数 输入例子: 5 输出例子: 2 */ //c语言版 #include <stdio.h> int main(void) { int integer,i; int count = 0; scanf("%d",&integer); unsigned u

华为OJ-求int型数据在内存中存储时1的个数

1 #include <iostream> 2 using namespace std; 3 int GetCount(int num) 4 { 5 int m=0; 6 while(num) 7 { 8 num &=(num-1); 9 m++; 10 } 11 return m; 12 } 13 int main() 14 { 15 int a; 16 cin>>a; 17 cout<<GetCount(a)<<endl; 18 } 原文地址:h

输入一个int型数据,计算出它在内存中存储时含1的个数

/******************************************************** 输入一个int型数据,计算出它在内存中存储时含1的个数 比如: 输入:5 输出:2 ********************************************************/ #include<iostream> int CountOne(int num) { int count = 0; while(num){ count++; num = num&am

计算int 型数值在内存中二进制1的个数

今天在华为OJ上遇到这么一个题目,很简单,但是却总是得不到最好的成绩记录.因此比较了自己的程序.思路与别人的异同,发现还是有很大区别的,遂记录如下. 题目-- 输入一个int型整数,求该整数的二进制在内存中有多少个1.例如输入10,由于其二进制表示为1010,有两个1,因此输出2. 思路1 <span style="font-size:18px;">public static void main(String[] args) { Scanner scanner = new

求int型数组和最大子数组 续

之前的博文里已经实现过该程序的构思.编译.运行,本次就不再重复与之相雷同的内容. 题目:与别人借组,借助求int型数组最大和子数组的问题,考虑大数溢出和int取值范围的问题 要求: 调试程序  当子数组所含元素值超过int型数组取值范围时,会出现什么情况? 实现: 在接触到这个问题之前,肯定的说,我从来没有考虑过这个问题,不是自己不知道int型数值的取值范围,而是自己根本没有注意过这个问题,也没有想过数的取值会超过这个范围.知道这个“问题”后我做了下面的事情: a.和同学借组,查阅相关资料,了解

整型数据在内存中的存放形式

整型数据在内存中是以其二进制的补码的形式存放的! 1.原码 就是以最高位作为符号位,0代表该数值为正,1代表为负! 比如:67和-67 2.反码 正数的原码.反码.补码相同! 负数的反码是在其符号位不变的基础之上,其余的数值位按位取反,就是0变成1,1变成0 3.补码 正数的原码.反码.补码相同! 负数的补码是其反码加1! 也就是说,在内存中,67其实存放的就是: 00000000 00000000 00000000 01000011 而-67其实存放的就是: 11111111 11111111

浮点数如何在内存中存储

首先,将10进制的小数0.1转换为二进制,方法如下: 0.1*2==0.2  取0.2的整数部分, 结果为0.0 0.2*2==0.4  取0.4的整数部分, 结果为0.00 0.4*2==0.8  取0.8的整数部分, 结果为0.000 0.8*2==1.6  取1.6的整数部分, 结果为0.0001 0.6*2==1.2  取1.6的整数部分, 结果为0.00011 0.2*2==0.4  取0.4的整数部分, 结果为0.000110 最后这一步开始循环,因此0.1的二进制为数为: 0.00