计算汉明权重的好方法~

汉明权重(hamming weight) ----- 计算数据位中1的个数 汉明重量是一串符号中非零符号的个数。因此它等同于同样长度的全零符号串的汉明距离(在信息论中,两个等长字符串之间的汉明距离,是两个字符串对应位置的不同字符的个数)。在最为常见的数据位符号串中,它是1的个数。 本文参考文章1 文章2 在wiki百科中给出,计算1的个数,目前来说最好的是按照树状进行相加(当然比遍历要快很多,遍历就相当于一棵极不平衡的数) 下面是variable-precision SWAR算法的实现: uint32_ t swar (uint32_ t i) { //步骤1 . 阅读详情

转载自:http://blog.youkuaiyun.com/ns_code/article/details/25425577


    剑指offer上的第10题,在九度OJ上测试通过。

 

时间限制:1 秒

内存限制:128 兆


  
题目描述:

输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。

输入:

输入可能包含多个测试样例。
对于每个输入文件,第一行输入一个整数T,代表测试样例的数量。对于每个测试样例输入为一个整数。
。n保证是int范围内的一个整数。

输出:

对应每个测试案例,
输出一个整数,代表输入的那个数中1的个数。

样例输入:
3
4
5
-1
样例输出:
1
2
32
 
  

   无论输入的是整数还是负数还是0,都可以将该整数和1进行与操作,如果结果不为0,则表明整数的最低位是1,而后将1左移一位,再次与该证书进行与操作,如果结果不为0,说明整数的次低位为1,依次类推,当1移位到变为0时,统计结束。这种方法需要将1移动32位,也就是需要循环32次。    更好的办法是利用如下结论:    把一个整数 (无论正负或0)减去1,再和原整数做与运算,会把该整数最右边的一个1变为0,例如:110100减1后变为110011,二者进行与操作后,得到110000,最后边的1变为了0,而前面的位都不变。    这样,我们可以利用这这一结论来从左向右依次将整数的最右边的1变为0,当该整数的所有位为1的位均变为0之后,便统计到了该整数二进制中1的个数。    AC代码如下:

[cpp]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. #include<stdio.h>  
  2. #include<stdlib.h>  
  3.   
  4. int NumOf1(int n)  
  5. {  
  6.     int count = 0;  
  7.     while(n)  
  8.     {  
  9.         count++;  
  10.         n = n & (n-1);  
  11.     }  
  12.     return count;  
  13. }  
  14.   
  15. int main()  
  16. {  
  17.     int nums;  
  18.     while(scanf("%d",&nums) != EOF)  
  19.     {  
  20.         int *N = (int *)malloc(nums*sizeof(int));  
  21.         if(N == NULL)  
  22.             exit(EXIT_FAILURE);  
  23.         int i;  
  24.         for(i=0;i<nums;i++)  
  25.         {  
  26.             scanf("%d",N+i);  
  27.             printf("%d\n",NumOf1(N[i]));  
  28.         }  
  29.     }  
  30.   
  31.     return 0;  
  32. }  

/**************************************************************
     Problem: 1513
     User: mmc_maodun
     Language: C
     Result: Accepted
     Time:80 ms
     Memory:1304 kb
****************************************************************/
GPU服务器维修全流程:从检测到解锁 《GPU服务器维修维保全流程指南》摘要:本文系统介绍GPU服务器从检测到解锁的完整维修流程。检测环节包含物理检查(氧化层、散热、PCB板)和电子诊断(ECC报错率、电源波动等);核心维修技术涵盖PCB板修复(微孔镀铜、BGA返修)和芯片级维修(成功率78-92%);解锁验证阶段包括性能解锁(VBIOS重写)和72小时稳定性测试。文末提供故障速查表及维保建议,强调定期除尘可降低38%故障率,推荐环境粉尘浓度控制在≤0.3mg/m³。 阅读详情

相关推荐

蓝牙 - 如何在Windows下抓取蓝牙数据

选择Windows Instarller(64-bit),最好不要选择PortableApps版,因为后面需要通过btvs.exe来启动Wireshark,如果是绿色可移植版,会启动失败。在安装完以后,找到btvs.exe文件,位于路径:C:\BTP\v1.14.0\x86下,这个视安装版本不同路径名不同。在第一台机器上启动btvs.exe,第二台机器上手动启动wireshark,并将第一台机器的IP地址作为参数。1,同一机器上,Wireshark安装后,会自动直接启动,如上面使用方式一样。

guoqx的专栏 2万+

二进制中1的个数

题目描述: 输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。 输入: 输入可能包含多个测试样例。 对于每个输入文件,第一行输入一个整数T,代表测试样例的数量。对于每个测试样例输入为一个整数。 。n保证是int范围内的一个整数。 输出: 对应每个测试案例, 输出一个整数,代表输入的那个数中1的个数。 样例输

ynjsb5的专栏 470

论文精读-ReTransformer ReRAM-based Processing-in-MemoryArchitecture for Transformer Acceleration

Transformer已经成为一种流行的深度神经网络(DNN)模型,用于神经语言处理(NLP)应用,并在神经机器翻译、实体识别等方面表现出优异的性能。然而,其在自回归解码器中的规模化点积注意机制在推理过程中带来了性能瓶颈。Transformer也是计算和内存密集型的,需要硬件加速解决方案。

a284365的博客 1922

汉明权重问题

总结1:汉明权重问题 计算 011010101010101110001数字有多少个1,采用以下公式, 循环x = x & (x - 1);直到x = 0 原理, x&(x-1)使得x最低位的1变为0,假设 x = 1011(二进制),就是x = 12, (1) x = x & (x-1) ==========> x = 1010 (1...

weixin_39304739的博客 1169

COMSOL新手必看:锂电池仿真从入门到精通的5个实战案例(附模型文件)

本文为COMSOL新手提供锂电池仿真的5个实战案例,涵盖锂枝晶生长模拟、电池热失控预警、SOC估计等效电路模型、电池组液冷系统热管理及SOH衰退模型构建。通过详细步骤和参数设置,帮助用户快速掌握锂电池仿真技术,提升新能源研发效率。附模型文件可直接应用。

wdx01234567的博客 260

2026 年 AI 大模型资讯深度研究报告 / 2026 年 3 月 11 日

2026 年已成为 AI 大模型发展的关键拐点年。从 2023 年 ChatGPT 开启的技术奇点,历经多模态突破、推理能力崛起,至 2025 年形成产业爆发态势,AI 大模型正从"技术验证期"迈向"产业落地期"。核心发现技术突破: OpenAI 于 2026 年 3 月 6 日发布 GPT-5.4,首次实现原生计算机操控能力,在 OSWorld 桌面操控测试中以 75% 成功率超越人类 (72.4%),标志着 AI 从"对话工具"向"自主数字员工"的时代跃迁市场格局。

AI天才研究院 786

3 汉明权重

即判断整数中有几个1 直接二进制展开的话,对于较大数字无法处理。因此要讲究下技巧 两种方式,1是二进制运算,位与、左右移… 每次n&amp;amp;1,1即000000…1,所以n&amp;amp;1返回的值要么是1 要么是0 然后处理后的“n”,右移一位,继续判断 最后计数 2 高中学的二进制计算方法–除以2,最后统计所有余数即为二进制 所以循环除以2,分两种情况:余1、整除,来讨论 代码看我勤劳程度补充 ...

qq_33612402的博客 714

C#上位机面试必问30题:机器视觉+工业通信+性能优化(含答案解析)

工业通信:围绕“稳定性”展开,重点答异常处理、断线重连、资源释放;机器视觉:围绕“精度+速度”展开,重点答预处理、ROI、参数优化;性能优化:围绕“UI不卡、内存不泄、效率不低”展开,重点答异步、限流、资源复用;面试加分项:结合实际项目案例(如“我在XX项目中用信号量解决了多设备并发卡顿问题”)。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1509

剑指 Offer 15. 二进制中1的个数

剑指 Offer 15. 二进制中1的个数 一、题目详情 编写一个函数,输入是一个无符号整数(以二进制串的形式),返回其二进制表达式中数字位数为 ‘1’ 的个数(也被称为 汉明重量))。 提示: 请注意,在某些语言(如 Java)中,没有无符号整数类型。在这种情况下,输入和输出都将被指定为有符号整数类型,并且不应影响您的实现,因为无论整数是有符号的还是无符号的,其内部的二进制表示形式都是相同的。 在 Java 中,编译器使用 二进制补码 记法来表示有符号整数。因此,在上面的 示例 3 中,输入表示有

jrrhjww的博客 234

飞牛NAS打造成童年经典游戏机

这篇文章介绍如何使用飞牛NAS搭建经典游戏模拟器。首先需开启Docker并下载RetroArch-web镜像,随后创建容器并设置端口映射。启动后上传游戏ROM文件(如NES格式),在模拟器中加载即可游玩。文章以修改版坦克大战为例,详细说明按键配置方法。同时还提到公网访问需配置DDNS或使用ZeroTier内网穿透。通过这套方案,用户可以在NAS上重温红白机等经典游戏体验。

dgnankai的专栏 885

Colmap论文——《Structure-from-Motion Revisited》论文阅读笔记

  最近又将Colmap论文翻出来仔细阅读总结了一下,于是顺便写个博客记录一下。Structure-from-Motion Revisited是当前SOTA的增量式SfM算法Colmap的论文,发表于2016年计算机视觉顶会CVPR。它是增量式SfM里程碑式的作品。 论文地址:https://openaccess.thecvf.com/content_cvpr_2016/papers/Schonberger_Structure-From-Motion_Revisited_CVPR_2016_paper.p

zeeq的博客 1万+

【leetcode】位运算,汉明权重,汉明距离,判断一个数是否是2的指数

【leetcode】位运算,汉明权重,汉明距离,判断一个数是否是2的指数一、几个有趣的位操作二、算法常用操作 n&(n-1)1. 计算汉明权重(Hamming Weight)2. 汉明距离3. 判断一个数是不是 2 的指数 一、几个有趣的位操作 1、利用或操作 | 和空格将英文字符转换为小写 ('a' | ' ') = 'a' ('A' | ' ') = 'a' 2、利用与操作 & 和下划线将英文字符转换为大写 ('b' & '_') = 'B' ('B' & '_') =

一个写湿的程序猿 942

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

使用simhash计算文本相似度

文本相似度计算常用于网页去重以及NLP里文本分析等场景。文本相似度,可以分为两种,一种是字面相似度,另一种是语义相似度。本文记录的是文本的字面相似度的计算及实现,语义相似度计算则需要海量数据去计算语义值,较为复杂。 最常用的且最简单的两种文本相似检测方法:局部敏感hash、余弦相似度

哈哈哈哈哈哈哈 9943

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

mysql 汉明距离检索_汉明距离海量数据算法

通过 采集系统 我们采集了大量文本数据,但是文本中有很多重复数据影响我们对于结果的分析。分析前我们需要对这些数据去除重复,如何选择和设计文本的去重算法?常见的有余弦夹角算法、欧式距离、Jaccard相似度、最长公共子串、编辑距离等。这些算法对于待比较的文本数据不多时还比较好用,如果我们的爬虫每天采集的数据以千万计算,我们如何对于这些海量千万级的数据进行高效的合并去重。最简单的做法是拿着待比较的文本...

weixin_42131890的博客 672

用python完成信源(Huffman)信道(汉明)编解码

def transmission1(sourceByte): t = len(sourceByte) / 1 print('本信源数据率为8bit/s(1bytes/s),需要传输', t, '秒') return t def transmission2(sourceBit): t = len(sourceBit) / 8 print('本信源数据率为8bit/s(1bytes/s),需要传输', t, '秒') return t #计算信源序列的信息量

weixin_41901213的博客 2333

海量文本相似度计算

总的理解我的感觉是加权求和,和embedding有点类似,最后判断‘距离’ SimHash 定义 SimHash是一种局部敏感hash,它也是Google公司进行海量网页去重使用的主要算法。 传统的Hash算法只负责将原始内容尽量均匀随机地映射为一个签名值,原理上仅相当于伪随机数产生算法。传统的hash算法产生的两个签名,如果原始内容在一定概率下是相等的;如果不相等,除了说明原始内容不相等外...

Jiashilin 1217

海量数据相似度计算之simhash和海明距离

SimHash 定义 SimHash是一种局部敏感hash,它也是Google公司进行海量网页去重使用的主要算法。 传统的Hash算法只负责将原始内容尽量均匀随机地映射为一个签名值,原理上仅相当于伪随机数产生算法。传统的hash算法产生的两个签名,如果原始内容在一定概率下是相等的;如果不相等,除了说明原始内容不相等外,不再提供任何信息,因为即使原始内容只相差一个字节,所产生的签名也很可能差别很...

fkyyly的专栏 5475

SimHash算法 详解:文本去重背后的冷兵器

SimHash A 与 B 之间的不同 bit 数,称为汉明距离。一类哈希方法,相似的对象有较大概率被映射到相同桶中。

啊不行了,要长脑子了 6192

verilog实现汉明权重_FPGA实现圆柱面投影变换

传统图像拼接的流程已经很成熟了,参考论文 Brown M , Lowe D G . Automatic Panoramic Image Stitching using Invariant Features[J]. International Journal of Computer Vision, 2007, 74(1):59-73。07年之后图像拼接的发展参看https://www.zhihu.c...

weixin_39624864的博客 231

C/C++ 中的位运算及其典型应用

C/C++ 中的位运算及其典型应用 C/C++ 中提供了6种位运算,对于每一种都很好理解。位运算比较简单,但是如果能灵活应用往往能取得预想不到的效果。这里将不会一一介绍其定义,这里的重点是介绍一些比较经典的应用。如果对其定义还不是很熟悉的朋友可以参考位运算。需要注意的是负数按补码形式参加位运算。 操作符 标记 & 按位与 | 按位或 ~ 取反 ^ 按位异或 << 左移 >> 右移 1. 按位与 1.1 判断奇偶 int x =

生命在于折腾! 1588

[Leetcode]数学运算技巧——python版本

本篇文章根据labuladong的算法小抄介绍有关数学运算技巧的常见算法,采用python3实现 文章目录常用的位操作计算汉明权重,T191判断整数是否为2的幂次方,T231查找只出现一次的数字,T136阶乘阶乘后的0阶乘后的k个0素数计数质数,T204模幂超级次方,T372如何高效求幂缺失元素丢失的数字,T268缺失和重复元素错误的集合,T645重复元素原地删除有序数组的重复项,T26原地删除有序链表的重复项,T83移除元素,T27移动零,T283随机抽取元素链表随机节点,T382脑筋急转弯Nim游戏,T

weixin_52093054的博客 835

计算机网络纠错码,纠错码

纠错码(error correcting code),在传输过程中发生错误后能在收端自行发现或纠正的码。仅用来发现错误的码一般常称为检错码。为使一种码具有检错或纠错能力,须对原码字增加多余的码元,以扩大码字之间的差别 ,即把原码字按某种规则变成有一定剩余度(见信源编码)的码字,并使每个码字的码之间有一定的关系。关系的建立称为编码。码字到达收端后,可以根据编码规则是否满足以判定有无错误。当不能满足时...

weixin_42379854的博客 2298

怎么将一个数字高低位互换_位运算的一些实用技巧

读完本文,你可以去力扣拿下如下题目:191.位1的个数231.2的幂-----------本文分两部分,第一部分列举几个有趣的位操作,第二部分讲解算法中常用的 n & (n - 1) 操作,顺便把用到这个技巧的算法题列出来讲解一下。因为位操作很简单,所以假设读者已经了解与、或、异或这三种基本操作。位操作(Bit Manipulation)可以玩出很多奇技淫巧,但是这些技巧大部分都过于晦涩,...

weixin_33043471的博客 1667

LeetCode笔记+题解:常用位运算

LeetCode笔记+题解:常用位运算 自大学开始,我便陆陆续续的学习一些 算法和数据结构 方面的内容,同时也开始在一些平台刷题,也会参加一些大大小小的算法竞赛。但是平时刷题缺少目的性、系统性,最终导致算法方面进步缓慢。最终,为了自己的未来,我决定开始在LeetCode上进行系统的学习和练习,同时将刷题的轨迹整理记录,分享出来与大家共勉。 参考教材: labuladong 参考资料: LeetCode社区官方提供的思路/题解 以及 评论区/题解区各路大神提供的思路/答案 一、基础知识 与/或/异或 1.

耿鬼不会笑的博客 354

文本内容相似度计算方法:simhash

背景 常见的余弦夹角算法、欧式距离、Jaccard相似度、最长公共子串、编辑距离等。这些算法对于待比较的文本数据不多时还比较好用,如果我们的每天采集的数据以千万计算,性能就是一个非常大的瓶颈。传统的hash算法只负责将原始内容尽量均匀随机地映射为一个签名值,原理上相当于伪随机数产生算法。传统的hash算法产生的两个签名,如果相等,说明原始内容在一定概率下是相等的;如果不相等,除了说明原始内容不相等外,不再提供任何信息,因为即使原始内容只相差一个字节,所产生的签名也很可能差别极大。所以hash算法只适合相同

wolflxiaolu的博客 2094

2025-03-15-位运算

位运算是一种基于整数二进制表示的运算方式。由于计算机内部以二进制形式存储数据,位运算的速度非常快,通常比普通算术运算更高效。

ttkqwe的博客 709
上一篇: debian7编译linux内核以及内核安装
下一篇: 关于dnw for linux在FL2440板子上的使用
weicz
博客等级 码龄19年 10粉丝 15原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值