程序设计中二进制的魅力
来源:互联网 发布:电子琴节奏软件 编辑:程序博客网 时间:2024/04/28 14:56
<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">1、二进制与位运算</span>
要谈二进制,不得不谈一下位运算。关于二进制的操作都是基于位运算的。位运算的显著特点就是效率高
基本操作:<< >> ^ & | ~ !
位运算常用基础:
判断奇偶性:
<span style="font-size:12px;">x&1==0 //为偶数</span>
<span style="font-size:12px;"></span>
求平均值:求(x+y)/2时,可能x+y会超过int的最大值,可以用位运算来求:
<span style="font-weight: normal;">int Ave(int x,int y) { return x&y+((x^y)>>1); } </span>
<span style="font-size:12px;">x&&!(<span style="color:#ff0000;">x&(x-1)</span>)//表达式为真表示x是2^n,x去除0这种特殊情况</span>
正整数的运算
x>>n;//x除以2的n次幂
取模运算
<span style="font-size:12px;">x&(2^k-1);///x对2^k取模</span>
交换两个数
<span style="font-size:12px;">a^=b;b^=a;a^=b;</span>
计算绝对值
int abs(int x){int y;y=x>>31;return (x^y)-y;}
快速幂运算
<span style="font-size:12px;">int pows(int a,int b){int ans=1,tmp=a;while(b!=0){if(b&1)ans*=tmp;tmp*=tmp;b>>1;}return ans;}</span>蒙哥利马幂模运算
<span style="font-size:12px;">//前提:(a*b) % c = (a%c) * b % c; //(公式1)(a*b) % c = (a%c) * b % c = (b%c) * (a%c) % c = (a%c) * (b%c) % c; ///【公式二】</span>核心基于快速密运算
<span style="font-size:12px;">int expMod2(int a,int b,int mod){int tx=a;int ans=1;tx%=mod;while(b!=0){if(b&1)ans=ans*tx%mod;b=(b>>1);tx=tx*tx%k;}return ans;}</span>
0 0
- 程序设计中二进制的魅力
- 面向对象程序设计思想的魅力
- 索引中include的魅力
- 从金蝶BOS开发中感悟java的魅力
- Web Services的魅力
- Gmail的魅力
- Junit的魅力
- Evanescence的魅力
- 永恒的魅力
- 谎言的魅力
- Spring 的魅力
- 猫粮的魅力
- 《C++程序设计语言》的魅力
- 文字的魅力
- 文字的魅力
- IBM的魅力
- 职业经理的个人魅力
- Shell的魅力
- IOS中Quartz2D使用中的注意知识点
- 曼哈顿最小距离生成树(poj 3241&& UVALive 3662)
- ScrollView嵌套ListView的解决方案
- android ListView 刷新数据,加载时遇到的数组越界问题
- IOS开发中手势滑动的6种技巧
- 程序设计中二进制的魅力
- c++运算符重载练习
- Android SDK与API版本的对应关系
- CentOS 查看(监控)服务器网卡流量
- 三菱PLC和PC机通过编程口串行通信实现
- poj 2065 SETI(高斯消元 解同于方程组)
- Swift小结函数和闭包
- Linux下Eclipse+JDK+Tomcat安装及环境配置
- 自定义控件 防腾讯视频分类视图(1)