首页 > 系统相关 >C语言代码实现:一个整数存储在内存中的二进制中的1的个数

C语言代码实现:一个整数存储在内存中的二进制中的1的个数

时间:2024-01-28 11:01:24浏览次数:27  
标签:count 二进制 ++ C语言 --- int num 按位 内存

e.g.代码实现:一个整数存储在内存中的二进制中的1的个数

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
	int num = 0;
	int count = 0;

	printf("统计num的补码中有几个1,请输入num:>");
	scanf("%d", &num);

	//统计num的补码中有几个1
	//法一
	//while (num)//负数出错
	//{
	//	if (num % 2 == 1)
	//		count++;
	//	num /= 2;
	//}

	//法二
	int i = 0;
	/*
	32bit
	num & 1 == 1
	按位与,同为1才是1,右移不断按位与
	*/
	for (i = 0; i < 32; i++)
	{
		if (((num >> i) & 1) == 1)
		{
			/*
      num & 1
      num >> i
      */
			count++;
		}
			//count++;
	}
  
  //法三
	
	int i = 0;
	int count = 0;
	while (num)//num != 0
	{
		count++;
		num = num & (num - 1);
		/*以6为例,
			num = 0110--->1
		num - 1 = 0011
			num = 0010--->2
		num - 1 = 0001
			num = 0000
		*/
	}

	printf("%d\n", count);
}



标签:count,二进制,++,C语言,---,int,num,按位,内存
From: https://blog.51cto.com/u_16287559/9452238

相关文章

  • C语言学习Part2(1000-2000行代码)
    #define_CRT_SECURE_NO_WARNINGS1#include<stdio.h>//头文件,仅标注一次e.g.猜数字游戏//e.g.猜数字游戏//1.电脑生成一个随机数//2.猜数字//3.循环玩#include<stdlib.h>#include<time.h>voidmenu(){ printf("************************\n"); printf("***1.pla......
  • 第一周培训crypto相关补充(Base家族-八卦图与二进制-md5)
    一.Base家族及其特点(1)Base161.编码后的字符只会在(0-9,A-F共16个)中出现。2.编码后的字符为源字符的两倍,4个bit一组,而1字节8bit,所以base16不可能用等号填充。(2)Base321.编码后的字符只会由大写字母(A-Z)和数字23456732个字符组成。2.因为base325bit为一组,所以编码长......
  • (2024.1.22-2024.1.28)C语言学习小结
    本周主要围绕《HeadfirstC》这本书展开C语言学习,按照计划,我学习了前四章的内容。基本内容以下时学习做的思维导图(笔记)第1章虽然做的是思维导图,但实际上因为大多数内容已经掌握,所以实际上就是补充记了几个零散的点。第2、2.5章主要是指针、数组、字符串的内容,大多也已经......
  • VMMap内存分析工具
    VMMap是一个运行在windows上的内存Profier工具。按F5刷新数据。 虚拟内存PrivateBytes:进程PrivateCommitted(不含共享库部分)的虚拟内存字节数   对应VMMap的Private、windows任务管理器中的【提交大小】,资源管理器中的【提交】Committed(VMMap):进程PrivateCommitted的......
  • delphi 增加32位应用程序内存地址空间,解决“Out of memory”问题
    增加32位应用程序内存地址空间,解决“Outofmemory”问题使32位应用程序能够在64位Windows访问最大4GB内存空间在应用程序的.dpr文件中添加编译指令{$SetPEFlagsIMAGE_FILE_LARGE_ADDRESS_AWARE}。usesWinapi.Windows;{$SETPEFLAGSIMAGE_FILE_LARGE_ADDRESS_AWARE......
  • C语言笔记9
       函数的参数传递形式参数:函数定义时的参数,简称形参。实际参数:函数调用时的参数,简称实参。实参与形参数目、类型和顺序应一致,占据不同存储单位。 理解单向值传递每个函数都有自己的变量空间,参数也位于这个空间;形参调用前不占内存单位,调用时对形参分配单位并传......
  • Python获取内存、CPU利用率,CPU温度
    最近一个项目的需求,在软件上加入硬件实时信息,大概搜索一下,没太好的结果,所以决定自己写一篇我的代码不难发现,都使用了psutil包,为什么呢,别的包我没太关注,纯粹是这台机的环境上有这个包如果大家没有这个包,使用pip工具安装一下即可,目前我还没发现兼容性问题python获取内存利用率......
  • RamMap物理内存分析工具
    RAMMap是一个用于在windows分析物理内存(PhysicalMemory)的工具。按F5刷新数据。 EmptyWorkingSets(清空工作集)EmptySystemWorkingSet(清空系统工作集)EmptyModifiedPageList(清空已修改的页列表)EmptyStandbyList(清空备份内存)EmptyPriority0StandbyList(清空优先......
  • C语言近段时间的总结
    一、电脑我们一开始买回来的电脑分成   硬件和操作系统   在二者中间有一层叫做  驱动层   。关于驱动层,目前我是这么理解的,它相当于是一座桥梁,是用来连接起虚拟的操作和现实的机器,因此可以通过现实当中的动作来使计算机完成一定的操作,也就是作为一个翻译来帮助......
  • 第二章数据是用二进制数表示的
    看过第二章之后知道了数据是使用二进制表示的,那么为什么用二进制表示呢?因为计算机内部是由集成电路电子原件组成的,他们的引脚有两种形态0V和5V二进制数只有0和1他们之间的特性非常吻合。字节是计算机中处理信息的基本单位,在字节单位处理数据时,如果数字小于存储数据的字节数,那么高......