当前位置:网站首页>位级运算之计算整数位级表示奇偶性
位级运算之计算整数位级表示奇偶性
2022-08-03 13:34:00 【Once_day】
位级运算之计算整数位级表示奇偶性
Author:Once day Date:2022年7月31日
漫漫长路刚刚开始,不要甘于平凡。
本算法基于C语言环境。
1.引言
可以只依靠基本的位级运算来计算位级表示的奇偶性。
如一个含有w位的向量 b n − 1 b n n − 2 ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ b 1 b 0 b_{n-1}bn_{n-2}······b_1b_0 bn−1bnn−2⋅⋅⋅⋅⋅⋅b1b0。
如果其中有奇数个位为1,那么返回值1,否则返回0。
如,[0001]返回1,[0011]返回0。
那么存在一种对数增长度的算法,来计算其值,而且无需判断语句。
2.实现
最简单的实现方式就是依次判断每位是否为1,然后累积起来,判断是否为奇数个。这样效率太低。
可以依靠异或运算加速判断。
这里假设w=8位:
对于形如[01010111]的位级表示,其有奇数个1,所以应该返回1。
异或运算规律如下:
值 | 值 | 结果 |
---|---|---|
0 | 0 | 0 |
0 | 1 | 1 |
1 | 1 | 0 |
因此,将[01010111]拆成两半,即[0101]和[0111],然后异或0101b ^ 0111b = 0010b
,如果有一对1,那么该位异或结果为0,如果有一个1,那么结果为1。
对于[0010],则可以拆分成[00]和[10],按此规律继续异或,最终将为1。
根据配对规则,如果有奇数个1,那么最后异或一定剩下1,该算法是递归的,其复杂度为 l o g 2 w log_2w log2w。
可表示为:
unsigned x; //假设32位
x=x^(x>>16);
x=x^(x>>8);
x=x^(x>>4);
x=x^(x>>2);
x=x^(x>>1);
完…
边栏推荐
- Insertion or Heap Sort
- 中英文说明书丨Abbkine AbFluor 488-鬼笔环肽
- OpenHarmony高校技术俱乐部计划发布
- 有趣的opencv-记录图片二值化和相似度实现
- leetcode16 Sum of the closest three numbers (sort + double pointer)
- 苹果终于认清现实,销量成为优先考虑,iPhone14将不涨价
- Heaps
- 硬件业务收入下滑,为了赚钱,苹果暧昧对待流氓软件和增加广告了
- [web penetration] detailed explanation of CSRF vulnerability
- 客户:我们系统太多,能不能实现多账号互通?
猜你喜欢
随机推荐
When Nodejs installation depends on cpnm, the install shows Error: Cannot find module 'fs/promises'
PyTorch构建分类网络模型(Mnist数据集,全连接神经网络)
设计思维 | 详看设计工作坊Workshop的11个关键技巧
typedef关键字的用法
为什么手动启动GBase 8c数据库中GTM节点
美国拟对华禁售128层以上NAND Flash制造设备
升级农企业务运营建设,智慧供应链管理平台打造“共赢生态链”
参数量仅0.5B,谷歌代码补全新方法将内部生产效率提升6%
d write binary
Golang 字典 map
飞桨开源社区季度报告来啦,你想知道的都在这里
【OpenCV】 级联分类器训练模型
ideaIU-2020.1下载
细胞图像数据的主动学习
Golang sync.WaitGroup
Nanoprobes金脂质偶联物的相关应用
TensorFlow离线安装包
8/2 训练日志(dp+思维+字典树)
汉源高科G8032标准ERPS环网交换机千兆4光10电工业以太网交换机环网+WEB管理+SNMP划VLAN
[R] Use grafify for statistical plotting, ANOVA, intervention comparisons, and more!