位运算加速技巧【持续更新】

在c语言中,有时需要乘以2,除以2,或者要求2^n是多少,这些运算可以自己写函数实现,也可以用一些写好的函数实现

但是最高效的,执行效率最快的,也是最装B的方法还是位运算(计算机本来就是用位来做计算的)。

~取反,0取反是1,1取反是0
<<是左移,比如1<<n,表示1往左移n位,即数值大小2的n次方
>>右移,类似左移,数值大小除以2的n次方
&按位与,因为1的二进制表示是00000001,所以对于二进制最后为1的与出来就为1,为0的就为0,比如
1&10为0,1&9却为1
|按位或,x|y中只要有一个1则结果为1
^按位异或,x^y相等则为0,不等则为1

所有数值必须转换为二进制数才能位运算,每一位数相对应运算

下面上傻瓜都看的懂的例子:

(1)1<<8 == 2^8 == 256  (2的次方)

(2)6<<1 == 12  (直接乘以2)

(3)6>>1 == 3    (直接除以2)

(4)6<<6 == 384 == 6*(2^6)  (乘以2的n次方)

(5)32>>3 == 4 == 32 / 8    (道理同上,除以2的n次方)

时间: 2024-08-29 04:12:08

位运算加速技巧【持续更新】的相关文章

剑指Offer之面试位运算总结

(1)基本知识 位运算的题目经常出现在面试中.在此总结一下关于位运算的知识点. 位运算是把数字用于二进制表示之后,对每一位上的0,1的运算. 其实二进制的位运算并不是很难掌握,因为位运算总共只有五种运算:与,或,异或,左移和右移. 左移: 左移运算符m <<n 表示把m左移n位.在左移n位的时候,最左边的n位将被丢弃,同时在最右边补上n个0. 比如: 00001010 << 2 = 00101000 10001010 << 3 = 01010000 右移: 右移运算符m

浅析关于PHP位运算的简单权限设计_php技巧

1.写在最前面最近想写一个简单的关于权限处理的东西,之前我也了解过用二进制数的位运算可以出色地完成这个任务.关于二进制数的位运算,常见的就是"或.与.非"这三种简单运算了,当然,我也查看了下PHP手册,还有"异或.左移.右移"这三个运算.记得上初中时数学老师就开始唠叨个不停了,在此我也不想对此运算再作额外的说明,直接进入正题. 2.如何定义权限将权限按照2的N次方来定义值,依次类推.为什么要这样子定义呐?这样子定义保证了每个权限值(二进制)中只有一个1,而它恰好对应

c语言中用位运算实现加法技巧介绍_C 语言

用位运算实现加法也就是计算机用二进制进行运算,32位的CPU只能表示32位内的数,这里先用1位数的加法来进行,在不考虑进位的基础上,如下 复制代码 代码如下: 1 + 1 = 0 1 + 0 = 1 0 + 1 = 1 0 + 0 = 0 很明显这几个表达式可以用位运算的"^"来代替,如下 复制代码 代码如下: 1 ^ 1 = 0 1 ^ 0 = 1 0 ^ 1 = 1 0 ^ 0 = 0 这样我们就完成了简单的一位数加法,那么要进行二位的加法,这个方法可行不可行呢?肯定是不行的,矛盾

阿里巴巴大数据计算平台MaxCompute(原名ODPS)全套攻略(持续更新20171122)

  概况介绍 大数据计算服务(MaxCompute,原名ODPS,产品地址:https://www.aliyun.com/product/odps)是一种快速.完全托管的TB/PB级数据仓库解决方案.MaxCompute向用户提供了完善的数据导入方案以及多种经典的分布式计算模型,能够更快速的解决用户海量数据计算问题,有效降低企业成本,并保障数据安全.本文收录了大量的MaxCompute产品介绍.技术介绍,帮助您快速了解MaxCompute/ODPS. MaxCompute 2.0:阿里巴巴的大数

「玩一玩」手把手教学帖:跟我一起学控件,仿制最新版DevExpress里的小控件(持续更新)

问题描述 allbyconmajia.看到caozhy的<>帖子,希望通过手把手教学,一方面提高教学效率,另一方面也排除掉了伸手党.出发点是不错的.在论坛逛了差不多一年,觉得就论坛来说,还是新手居多.我不靠编程吃饭,所以对掌握新知识没什么动力,会的东西看起来比较老旧.尽管如此,还是希望能以我老旧的知识,给有需要的新手一点提示和参考.有兴趣参与的,可以和我一起动手制作.---------------------------note:这个帖子持续更新,不会一下子写完.这个东西是很早前做着玩的.源代

300+篇运维、数据库等实战资料免费下载(文章+PDF+视频,持续更新)

2017年已过去一半,在此小编为大家精心整理了2017上半年热点事件解析.实战技术资料以及特别策划短视频系列,希望可以帮助大家更深入地回顾上半年的技术热点,并储备更充足的技术干粮继续2017的下一半. PART 1 峰会回顾资料 云栖大会 [上海云栖大会]2017云栖大会上海峰会资料合计(现场视频+PDF下载) [成都云栖大会]2017云栖大会成都峰会资料合计(现场视频+PDF下载) [南京云栖大会]2017云栖大会南京峰会资料合计(现场视频+PDF下载) 技术峰会 [运维/DevOps峰会]

这些开源项目,你都知道吗?(持续更新中...)[原创]

原文 这些开源项目,你都知道吗?(持续更新中...)[原创] Json.NET  http://json.codeplex.com/ Json.Net是一个读写Json效率比较高的.Net框架.Json.Net 使得在.Net环境下使用Json更加简单.通过Linq To JSON可以快速的读写Json,通过JsonSerializer可以序列化你的.Net对象.让你轻松实现.Net中所有类型(对象,基本数据类型等)和Json的转换.   Math.NET http://www.mathdotn

构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(1)-前言与目录(持续更新中...)

原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(1)-前言与目录(持续更新中...) 曾几何时我想写一个系列的文章,但是由于工作很忙,一直没有时间更新博客.博客园园龄都1年了,却一直都是空空的,网上后台管理系统,权限管理系统多如猴毛,各个大虾都有自己的想法和方式.当然我还未能是大虾, 前言 做一件事情之前总会有前言,首先本项目的原型是我之前在一家公司研发的一个制造业ERP系统,已经上线并开始运行,按道理来说这是一套合格的系统方案.之前原型是 Asp.

阿里云数加大数据计算服务MaxCompute学习路线图 (持续更新中)

免费开通大数据服务:https://www.aliyun.com/product/odps 最近很多客户私信来咨询如何学习阿里云数加大数据计算服务MaxCompute 技术.为此,我们列了一个路线图供大家学习大数据计算服务MaxCompute.这个列表包含了一些社区的优秀资料和我们的原创文章.我们会随着大数据计算服务MaxCompute技术的发展持续更新本文,也会在继续贡献内容来帮助同学们快速入门或持续提高. 大数据计算服务(MaxCompute) 快速.完全托管的TB/PB级数据仓库解决方案,