位操作

1. 改变符号:取反+1

2. 与0异或保持不变,与-1(0xffffffff)异或相当于取反。

3. 负数右移可以认为是补符号位(当然也有机器不是这样子)。负数右移31位就是-1. 

 1 int sign(int n) {
 2     return ~n + 1;
 3 }
 4 
 5 int abs(int n) {
 6     int s = n >> 31; // if n >= 0, s = 0, n ^ s = n; if n < 0, s = -1, n ^ s = ~n;
 7     return (n ^ s) - s; // if n >= 0, return n - 0; if n < 0, return ~n - (-1);
 8 }
 9 
10 int swap(int &a, int &b) {
11     a ^= b;
12     b ^= a;
13     a ^= b;
14 }

求小于等于n的素数;

 1 void set(int &n, int p) {
 2     n |= 1 << p;
 3 }
 4 
 5 bool check(int n, int p) {
 6     return n & (1 << p);
 7 }
 8 
 9 void getPrimes(int n, vector<int> &ret) {
10     int* visited = new int[n >> 5 + 1];
11     memset(visited, 0, sizeof(int) * (n >> 5 + 1));
12 
13     for (int i = 2; i <= n; ++i) {
14         if (!check(visited[i >> 5], i & 0x1f)) {
15             ret.push_back(i);
16             for (int j = i * i; j <= n; j += i) { //start from i * i, check chapter 7 in careercup
17                 set(visited[j >> 5], j & 0x1f);
18             }
19         }
20     }
21 
22     delete[] visited;
23 }

 反转二进制串:

1 int reverseBinary(int n) {
2     n = ((n & 0xaaaaaaaa) >> 1) | ((n & 0x55555555) << 1);
3     n = ((n & 0xcccccccc) >> 2) | ((n & 0x33333333) << 2);
4     n = ((n & 0xf0f0f0f0) >> 4) | ((n & 0x0f0f0f0f) << 4);
5     n = ((n & 0xff00ff00) >> 8) | ((n & 0x00ff00ff) << 8);
6     n = ((n & 0xffff0000) >> 16) | ((n & 0x0000ffff) << 16);
7     return n;
8 }

计数1的个数:

 1 int calculateOnes(int n) {
 2     n = ((n & 0xaaaaaaaa) >> 1) + (n & 0x55555555);
 3     n = ((n & 0xcccccccc) >> 2) + (n & 0x33333333);
 4     n = ((n & 0xf0f0f0f0) >> 4) + (n & 0x0f0f0f0f);
 5     n = ((n & 0xff00ff00) >> 8) + (n & 0x00ff00ff);
 6     n = ((n & 0xffff0000) >> 16) + (n & 0x0000ffff);
 7     return n;
 8 }
 9 
10 int calculateOnes2(int n) {
11     int c = 0;
12     for (; n; c++) n &= n - 1;
13     return c;
14 }
15 
16 int calculateOnes3(int n) {
17     int tmp = n - ((n >> 1) & 033333333333) - ((n >> 2) & 011111111111);
18     return ((tmp + (tmp >> 3)) & 030707070707) % 63;
19 }

 这个问题还有其他解法:http://www.cnblogs.com/graphics/archive/2010/06/21/1752421.html

最后一个方法,mod 63是利用到了这个性质:

(a + b) % p = (a % p + b % p) % p 

转载于:https://www.cnblogs.com/linyx/p/3832315.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/299517.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2020年,朋友圈的正确打开方式!

全世界只有3.14 % 的人关注了青少年数学之旅各位读者朋友们大家好 我是你们的小伙伴上流君我们开始不定期做互推了不是广告&#xff0c;根据兴趣关注感谢理解与支持ღ( &#xff65;ᴗ&#xff65; )比心有些人&#xff0c;生活离不开朋友圈。朋友圈是他们展示自我、观察世界的…

因为我把JMM原理讲解了一遍,这给足了我涨薪的底气!

一、什么是JMM&#xff1f; JMM指的是Java内存模型&#xff0c;即 Java Memory Model Java内存模型并不是一种实际存在的东西&#xff0c;而是一种人为形成的约定&#xff0c;是一种概念。 关于JMM&#xff0c;我们需要了解一些相关的同步约定 &#xff1a; 线程在解锁前&…

防腐投加器需要加盐吗_果干、果脯、蜜钱、水果脆片,哪个有营养?你吃对了吗?...

时下&#xff0c;追求健美瘦身的年轻人&#xff0c;常把水果千作为零食、加餐的选择之一。大家认为水果干不仅味道好&#xff0c;富含营养素&#xff0c;而且热量低。还有一些人会把果脯、蜜钱、水果脆片等当作新鲜水果的替代品&#xff0c;用以补充营养一认为果 脯、蜜钱的原料…

.NET6正式版将近,70%开发者或面临技术断层!

过往一周&#xff0c;VS2019 发布了最新V16.11&#xff0c;正式支持热重载&#xff1b;.NET6发布了最后一个预览版Preview7&#xff0c;各大新功能宣告完成&#xff1b;随之C#10的新特性也基本成型&#xff0c;好东西很多&#xff01;各种密集的版本更新&#xff0c;佐证了行业…

谈谈分布式事务(Distributed Transaction)[共5篇]

[第1篇] SOA需要怎样的事务控制方式 在一个基于SOA架构的分布式系统体系中&#xff0c;服务&#xff08;Service&#xff09;成为了基本的功能提供单元&#xff0c;无论与业务流程无关的基础功能&#xff0c;还是具体的业务逻辑&#xff0c;均实现在相应的服务之中。服务对外提…

软件方面的词汇

1 SaaS是Software-as-a-service&#xff08;软件级服务&#xff09; SaaS提供商为企业搭建信息化所需要的所有网络基础设施及软件、硬件运作平台&#xff0c;并负责所有前期的实施、后期的维护等一系列服务&#xff0c;企业无需购买软硬件、建设机房、招聘IT人员&#xff0c;即…

一只蝙蝠的自述在朋友圈火了:千万不要再吃野味了!

全世界只有3.14 % 的人关注了青少年数学之旅来源&#xff1a;少女兔&#xff08;ID&#xff1a;iiilass&#xff09;、人民日报&#xff08;ID&#xff1a;rmrbwx&#xff09;从营养价值上来看野生动物和家养动物的差别微乎其微既不能延年益寿&#xff0c;也不能青春永驻它们不…

转载:xml文件中的特殊字符

在XML文档中预定义好的实体: < < 小于号 > > 大于号 &amp; & 和 &apos; 单引号 &quot; " 双引号 实体必须以符号"&"开头&#xff0c;以符号";"结尾。 注意: 只有"<" 字符和"&am…

掌握JVM 运行时数据区,其实不是很难,加薪也是要技巧可言的!!!

一、概念 Java 内存区域和内存模型是不一样的东西&#xff0c;内存区域是指 Jvm 运行时将数据分区域存储&#xff0c;强调对内存空间的划分。 而内存模型&#xff08;Java Memory Model&#xff0c;简称 JMM &#xff09;是定义了线程和主内存之间的抽象关系&#xff0c;即 J…

不要被约束的意思_俗话说:“娶妻不娶颧骨高,嫁汉不嫁连眉梢”,到底什么意思?...

“世有伯乐&#xff0c;然后有千里马。千里马常有&#xff0c;而伯乐不常有。”——《杂说》 唐韩愈传说春秋时期&#xff0c;有个叫伯乐的人很会选马&#xff0c;他选马的时候&#xff0c;并不需要骑着马真刀真枪地跑几圈&#xff0c;只是看看马的骨相、听听马的嘶鸣就能判断出…

终于来了!微软正式推出 VS Code 测试 API

随着 Visual Studio Code 1.59.0 正式版本的发布&#xff0c;全新的插件测试 API 也从试验版本进入了正式版本。自 2020 年 9 月起至今&#xff0c;经过了将近一年及数次版本迭代的打磨&#xff0c;不管是 API 的功能性还是易用性&#xff0c;与首个预览版本相比都获得了极大的…

发布软件之前,怎样告诉用户怎么用

这几年&#xff0c;大大小小的做过十来个项目&#xff0c;软件做好了&#xff0c;怎样告诉别人你的工作成果呢&#xff1f; 我的经验适合于公司内部项目&#xff0c;不适合向外发布的面对像上帝一样的客户的项目。 有几个项目是公司内部项目&#xff0c;虽然大家平时沟通的邮件…

MariaDB 10的复制 集群 高可用搭建 大表拆分【持续更新中】

视频地址 http://edu.51cto.com/course/course_id-1691.htmlMariaDB 10培训课程第一部分 复制1.基于GTID方式复制配置及注意事项2.基于表的并行复制3.多源复制&#xff08;MariaDB 10支持多主一从&#xff09;4.从库延迟如何找到那条执行慢的SQL5.复制异常处理1062,1032错误处理…

c++歌手大赛系统_计人即讯|第十届程序设计大赛

“第十届程序设计大赛”为激发学生学习计算机语言和科学使用计算机的热情&#xff0c;培养独立思考、勇于创新的探索精神和敢闯会创的意志品格&#xff0c;我院于12月5日13时30分在中主阶教201室成功举办了“第十届程序设计大赛”。本次大赛主要考察选手们应用计算机解决生活中…

限时9.9元 | 快速领取数学建模竞赛备战必备技巧与论文详解!

全世界只有3.14 % 的人关注了青少年数学之旅大家晚上好&#xff0c;随着美赛时间的公布以及大大小小的数学建模竞赛的进行&#xff0c;小天经常可以收到来自很多小伙伴们提出的问题&#xff0c;“竞赛中如何去考虑选题&#xff1f;”、“如何进行思路分析&#xff1f;”、“参考…

项目经理问我Java内存区域模型!急急急

也就这么点吧 Java内存区域主要分为&#xff1a;堆&#xff0c;栈&#xff0c;方法区三大部分 1、堆&#xff1a;是内存区域中最大的部分&#xff0c;所有线程共享&#xff0c;其中存放创建的对象和数组。由于堆是垃圾收集器管理的主要区域&#xff0c;因此也叫GC堆。 2、栈…

设计模式之中介者

中介者模式介绍中介者模式中介者模式是一种行为设计模式&#xff0c;能让你减少对象之间混乱无序的依赖关系&#xff0c;该模式会限制对象之间的直接交互&#xff0c;迫使它们通过一个中介者对象进行合作。中介者模式顾名思义&#xff0c;可以用我们平时生活中的房产中介去理解…

2010 本年度认证目标:坐沙发的熊

2月.wcf-------哎2月份没搞定啊。 3月.winform------3月份还有时间&#xff0c;不能被无数的破事儿占了&#xff01; 4月.web 3.5 5月.wpf转载于:https://www.cnblogs.com/zhuispeed/archive/2010/02/01/1660862.html

你的网页加载太慢了怎么办?

客户反映&#xff0c;“网页速度太慢了&#xff01;&#xff01;”&#xff0c;怎么办&#xff1f; 这个问题似乎有些难以解决&#xff0c;慢了就是慢了&#xff0c;也许用户使用就是一个56K猫&#xff0c;也许服务器只有256K的带宽&#xff0c;也许是网页设计有问题&#xff…