`

判断一段内存是否全部为0

 
阅读更多

方法一:

        start = clock();
	while( (BITSIZE-sizeof(int)*index)>=sizeof(int) )
	{
		//printf("%d %d\t",( *(int *)((char*)bits+sizeof(int)*index) ),(*(bits+index)));
		//result |= ( *(int *)((char*)bits+sizeof(int)*index) );
		result |= ( *(bits+index) );
		index++;
	}
	if(result==0)
		printf("bits is all 0!\n");
	else
		printf("bits is not all 0!\n");
	finish = clock();
	printf( "%d %d %d tick\n",start,finish, finish - start );

 

方法二:

        start = clock();
	while(  (BITSIZE-sizeof(int)*index)>=sizeof(int)  )
	{
		if( *(bits+index)==0 )
		{
			index++;
			continue;
		}
		else
			break;
	}
	if(index==(BITSIZE/sizeof(int)))
		printf("bits is all 0!\n");
	else
		printf("bits is not all 0!\n");
	finish = clock();
        printf( "%d %d %d tick\n",start,finish, finish - start );

 

  方法一和方法二的效率基本一致

 

1
1
分享到:
评论
3 楼 canghailan 2013-04-12  
C++中能直接操作的最大位数64,每64位统计,最后相加,暂时只能想到这个办法。
2 楼 yiranwuqing 2013-04-10  
canghailan 写道
Hamming weight 算法应该效率更高


如果这段内存的长度是1000×4字节呢?
使用Hamming weight如何处理,麻烦详细介绍下

http://www.cnblogs.com/Martinium/archive/2013/03/01/popcount.html
该文章中详细介绍了,但是不知道如果当bit位大于64后如何处理呢?

Hamming weight用于统计bit数组中的非0个数的确是个很好的方法
1 楼 canghailan 2013-04-07  
Hamming weight 算法应该效率更高

相关推荐

    内存清理工具.rar

    电脑运行一段时间后,内存就会越来越少,没有足够的剩余可用内存,势必影响系统和应用程序的运行速度。而内存清理工具能够随时自动智能调整和释放内存,让系统保持足够的内存可用空间,以藉此提升电脑的执行速度。 ...

    段页式虚拟存储管理

     (2)对一个给定逻辑地址,判断其是否缺段、缺页,若不缺段、不缺页,则映射出其物理地址;  (3)若缺段则进行缺段中断处理,若缺页则进行缺页中断处理。  假定内存64K,内存块(页框)1K,进程逻辑地址空间...

    基于Java模拟操作系统段页式虚拟内存管理【100012423】

    题目描述: 内存大小64K,页框大小为...地址映射:请求一个逻辑地址(段号、段偏移),判断是否缺页,如果不缺页,计算输出其物理地址;若缺页,根据驻留集置换策略,选择一页换出并将请求的页换入,再计算其物理地址。

    汇编语言判断三角形

    当敲下回车后,子程读取字符结束,将进行三次判断三角形两边之和是否大于第三边。然后根据是否能构成三角形输出“Y”或者“N”。子程的最后恢复现场,通用寄存器的值依次出栈。程序结束。 程序运行结果如下图1所示,...

    补丁模块(带源码)InlinePatch,Hook,内存DLL注入等等

    下面这个模块是我使用易语言时写补丁最常用的一个模块(当然很多也是抄的),一开始我觉得bug肯定会很多,放出去肯定又会坑很多人,后来我发现坑坑更健康,当你明白一个东西的优缺点之后,你才会更好的选择你所需要...

    浅谈VueJS SSR 后端绘制内存泄漏的相关解决经验

    再加上内存泄漏也没有特定的报错信息,只能通过一定时间段的日志来判断是否存在内存泄漏。大家熟悉的常用调试工具对排查内存泄漏也没有用武之地。当然了,除了专门用于排查内存泄漏的工具(抓取Heap之类的工具)之外...

    yangwenmai#learning-growth#21.套路篇:如何“快准狠”找到系统内存的问题?1

    1. 先用 free 和 top,查看系统整体的内存使用情况 2. 再用 vmstat 和 pidstat,查看一段时间的趋势,从而判断出内存问题的类型 3.

    操作系统-复习-判断题.doc

    (T)1. CPU和通道的关系是主从关系,CPU是主设备,...采用分页存储技术可以将逻辑上独立的代码装入一段连续的物理内存。 (T)14.采用静态资源分配方法可以预防死锁的发生。 T (T)15.操作系统"生成"是指能产生最适合

    c程序设计习题参考(谭浩强三版)习题参考解答

    系统如何判断一个量的“真”和“假”? 10 5.3写出下面各逻辑表达式的值。设a=3,b=4,c=5。 10 5.4有3个整数a,b,c,由键盘输入,输出其中最大的数。 10 5.5有一函数: 11 5.6给出一百分制成绩,要求输出成绩等级’...

    汇编语言程序题-将字符串转换成对应的大写字母

    汇编语言程序题-将字符串转换成对应的大写字母

    resin-jvm 调优

    过一段时间,继续存在的对象将获得使用期并转入更长寿命的域中。分代收集器对不同的域使用不同的算法以优化性能。 2.6.并发收集器 并发收集器与应用程序同时运行。这些收集器在某点上(比如压缩时)一般都不得不...

    Url消重算法(BloomFilter)

    算法原理: 其首先申请一块大内存,并把内存中的所有位设置为0。对每一个URL,用10个不同的hash函数计算其hash值,并把这些hash与内存bit数大小取模,把取模后的10个数在内存对应的位置设为1。在设置前会判断...

    你必须知道的495个C语言问题

    6.22 如何在一个文件中判断声明为extern的数组的大小(例如,数组定义和大小在另一个文件中)?sizeof操作符似乎不行。 6.23 sizeof返回的大小是以字节计算的,怎样才能判断数组中有多少个元素呢? 第7章 内存...

    华中科技大学汇编实验一二三.zip

    (3)在标号LOPA前加上一段程序,实现新的功能:先显示提示信息“Press any key to begin!”, 然后,在按了一个键之后继续执行LOPA处的程序。 2.3 任务3. 《80X86汇编语言程序设计》教材中 P45的 2.4题的改写。 要求:...

    《计算机维护技术》第1阶段在线作业.docx

    但运行某些程序时出现死机现象,判断故障原因是: 《计算机维护技术》第1阶段在线作业全文共16页,当前为第5页。 《计算机维护技术》第1阶段在线作业全文共16页,当前为第5页。 A) CPU热稳定性不佳 B) 所运行的软件...

    《你必须知道的495个C语言问题》

    3.15 我要检查一个数是不是在另外两个数之间,为什么if(a b c)不行? 40 3.16 为什么如下的代码不对?int a=1000, b=1000; long int c=a * b; 40 3.17 为什么下面的代码总是给出0?double degC, degF; degC= ...

    电子秒表设计.doc

    插入一段判断定时过程中是否有按键输入的程序段 C1: JB P3.6,B1 ACALL DELAY10;延时10毫秒消抖 JB P3.6,C1 JNB P3.6,$;等待按键松开 zt1: MOV P3,#0FFH;对P3口初始化,设置为高电平,用于按键输入 jb p3.6,$;循环判断...

    MFC的程序框架剖析

    紧接着就会有一个判断,用来确定该链表中是否只有一项,如果链表中保存了多个文档模版,则会弹出一个对话框,来让我们选择到底是使用哪一套文档模版来构建应用程序,相信大家也都见到过这种情况吧。对了,还有一点要...

Global site tag (gtag.js) - Google Analytics