`

判断一段内存是否全部为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 算法应该效率更高

相关推荐

    汇编语言判断一个数是否为0

    在汇编语言编程中,判断一个数是否为0、正数或负数是基础操作,这对于理解计算机底层工作原理和进行程序设计至关重要。本实验旨在通过编写子程序来熟悉汇编语言,特别是涉及子程序调用、数值运算以及条件判断等概念...

    介绍使用脚本判断内存泄漏的简便方法

    **收集后续状态**:经过一段时间(例如15分钟后),再次执行`psvg > ps.after`,获取最新的进程内存使用信息。 3. **对比分析**:运行`./post_vg.sh ps.before ps.after`,脚本会自动比较两次收集的数据,并输出每...

    易语言快速判断数组中的数值

    4. **拷贝内存**:在易语言中,`拷贝内存`是一个低级别的操作,它用于将一段内存区域的内容复制到另一段内存区域。在快速判断数值的过程中,`拷贝内存`可能被用来高效地处理大数组或者优化内存操作,但这需要更深入...

    回文判断,回文判断,试编写一个算法,判断依次读入的一个以@为结素符的字母序列

    在计算机科学中,回文判断是一个经典的问题,旨在判断一个字符串是否为回文。回文是指一个字符串,读取方式不变,小写字母和大写字母视为相同的字符。例如,"radar"是一个回文,而"hello"不是。 在本文中,我们将...

    如何检查内存泄露 on AIX

    如果一个进程的内存使用量在一段时间内持续增加,而没有明显的释放,那么可能存在内存泄漏。此外,可以使用gdb等调试工具进行更深入的分析,检查代码中的内存分配和释放行为。 总结来说,检查AIX系统中的内存泄漏...

    内存检测,检测你的内存是否存在错误或者损坏

    启动工具后,按照提示选择测试选项,一般推荐进行全盘深度测试,这可能需要一段时间,但可以更准确地检查内存问题。 5. **测试结果分析**:如果检测过程中出现错误报告,通常会显示错误的内存地址、类型和其他详细...

    易语言驱动判断内核内存是否可读源码

    在标题中提到的“驱动判断内核内存是否可读源码”是一个关于操作系统内核内存管理的编程话题,它涉及到计算机系统底层操作的知识。 在Windows系统中,驱动程序是操作系统与硬件设备之间的桥梁,它们运行在内核模式...

    写一算法,判断一棵二叉树是否是一棵二叉排序树。

    根据给定的文件信息,我们将深入探讨如何通过不同的方法来判断一棵二叉树是否为二叉排序树(Binary Search Tree, BST)。二叉排序树是一种特殊的二叉树,它满足以下条件: 1. 若左子树不为空,则左子树上所有节点的...

    Java的内存管理机制分析

    - **复制算法**:将可用内存按容量划分为大小相等的两块,每次只使用其中的一块。当这一块的内存用完了,就将还存活着的对象复制到另一块上面,然后再把已使用过的内存空间一次清理掉。 - **分代收集算法**:根据...

    安卓中把数据库读入内存中的判断方法

    这涉及到如何正确地判断是否已经成功地将数据库读入内存。本文将详细探讨这一过程及其相关知识点。 #### SQLite简介 SQLite是一种轻量级的嵌入式关系型数据库管理系统。它被广泛应用于移动设备上,如Android和iOS...

    MT内存测试专业版,MT内存测试专业版

    - **错误定位**:当检测到内存错误时,该工具能准确报告错误的位置和类型,帮助用户判断是否需要更换内存条。 - **压力测试**:通过持续的高强度测试,模拟长时间高负载工作,检查内存的稳定性。 - **自定义测试...

    WinCE内存监视工具

    4. **内存泄漏检测**:通过对比不同时间点的内存使用情况,发现持续增长的内存占用,判断是否存在内存泄漏问题。 5. **内存碎片分析**:分析内存碎片的产生和分布,提供优化内存分配策略的参考。 6. **内存报告**...

    VC 检测内存使用状态.rar

    在VC 6.0环境中,你可以将这段代码放入一个新工程,编译并运行,查看内存状态。 通过学习和实践此类程序,开发者可以更好地理解系统资源的使用情况,从而优化应用程序的性能,避免内存泄漏等问题。在实际项目中,你...

    Address判断地址是否合法

    比较指针与nullptr可以判断指针是否为空,空指针被认为是合法的,因为它不指向任何特定的内存地址。 5. **栈内存与堆内存**:栈上的内存由编译器自动管理,而堆上的内存需要程序员手动管理。栈内存的生命周期受限...

    内存条检测工具

    接下来,你可以进行稳定性测试,如运行内存压力测试,持续一段时间观察是否有错误报告。如果一切正常,这表明内存条是可靠的。如果出现错误,那么可能需要进一步排查,看看是单一内存条的问题还是整个系统的兼容性...

    易语言源码易语言加速清理内存源码.rar

    本资源“易语言源码易语言加速清理内存源码.rar”提供了一段使用易语言编写的代码,用于优化和清理计算机的内存,提升系统运行速度。 在计算机科学中,内存管理是一项关键任务,它涉及到程序运行时如何分配、使用和...

    程序内存泄漏检测库,很实用

    "程序内存泄漏检测库,很实用"这个标题暗示了存在一种工具或库,专门用于检测程序中的内存泄漏。这类工具通常通过插入到编译流程中,或者作为运行时库动态链接,以便在程序运行过程中监控内存分配和释放的情况。它们...

    内存管理模拟系统

    3. **内存分配与回收**:系统应能处理随机出现的进程请求,即进程i申请jKB内存,程序需判断是否有足够的连续内存空间进行分配。当进程结束或释放内存时,系统应能正确识别并回收相应的内存块,同时处理好内存块的...

    IBM内存分析工具(java)

    - 生成内存dump文件可能需要一段时间,对生产环境可能造成短暂影响,应选择合适的时机执行。 - 分析大型内存dump文件可能需要较高的硬件资源。 总结,IBM内存分析工具是Java开发者诊断和优化内存问题的得力助手,...

Global site tag (gtag.js) - Google Analytics