当前位置: 首页 > news >正文

C/C++ 位操作 总结


 
#include <bitset>
#include <iostream>
#include <string>
#include <limits>
 
using namespace std;
 
int main(int argc, char* argv[])
10  {
11      cout<<"==移位操作===================="<<endl;
12      //左移/右移n位将所有位向左/右移动n位,腾出来的位置补零,超出边界的位置被丢弃。相当于乘以/除以2的n次方。
13      int x=20;
14      int y=x<<3;
15      cout<<y<<endl;
16      cout<<hex<<y<<endl;
17      y=y>>3;
18      cout<<y<<endl;
19      y=y>>3;
20      cout<<y<<endl<<endl;
21      //打开指定位(将指定位设置为1):将该数的第n位于1或。
22      //通过移位运算符来构造掩码,将1左移n-1位,然后于该数或。
23      cout<<"==1:将指定位设置为1===================="<<endl;
24      int lottabits= 5,bit=16,xbit,c,j,k=4;
25      xbit = (~bit);
26      c=lottabits|bit;
27      j=lottabits;
28      j|= 1<<k;
29      bitset<32> bita(lottabits); 
30      bitset<32> bitb(bit);
31      bitset<32> bitc(c);
32      bitset<32> bitd(j);
33      bitset<32> bitx(xbit);
34   
35      cout <<"5 bits  is: "<<bita<<endl<<"16 bits is: "<<bitb<<endl<<"5|16    is: "<<bitc<<endl;
36      cout <<"5|=1<<4 is: "<<bitd<<endl<<endl; 
37      //切换指定位(将原来的0置为1,原来的1置为0):将该数的指定位于1异或。
38      //
39      cout<<"==2:切换指定位===================="<<endl;
40      c=lottabits^bit;
41      bitset<32> bitm(c);
42      cout <<"5 bits  is: "<<bita<<endl<<"15 bits is: "<<bitb<<endl<<"5|15    is: "<<bitm<<endl<<endl; 
43     
44      //关闭指定位(将指定位设置为0):将该数的指定位(第n位)于0于。
45      //通过移位构造掩码,将1左移n-1位,然后取反 再于该数相与。
46      cout<<"==3:关闭指定位===================="<<endl;
47      int i=4;
48      i=(~i);
49      c=lottabits&i;
50      j=lottabits;
51      j &= ~(1<<2);
52      bitset<32>    bith(c);
53      bitset<32>    bitj(j);
54      bitset<32>    biti(i);
55      cout <<"5  bits  is: "<<bita<<endl<<"~4  bits is: "<<biti<<endl<<"5 &(~15) is: "<<bith<<endl; 
56      cout <<"5&(~(1<<2)): "<<bitj<<endl<<endl;
57   
58      //测试指定位(确定将指定位中对应位是否为1):将该数的指定位于1于操作,返回值不变。即lottabits&bit ==bit或 if(lottabits&bit)。
59      //if(lottabits&1<<n-1)
60      cout<<"==4:测试指定位===================="<<endl;
61      c=lottabits&bit;
62      bitset<32> bitf(c);
63      cout <<"5  bits  is: "<<bita<<endl<<"~15 bits is: "<<bitb<<endl<<"5 &(~15) is: "<<bitf<<endl<<endl; 
64      cout<<"======================"<<endl;
65  }

相关文章:

  • Java的一些基本语法
  • WPF布局-布局属性(四)
  • GAE 博客——B3log Solo 0.2.1 发布预告
  • win2003主/辅DNS服务器详细配置
  • Microsoft SMS Sender
  • VOD三种VOD视频点播技术的简介和比较
  • iOS 4.2版safari对HTML5特性支持更新
  • 用window.location和window.open做链接的区别
  • OpenGL入门实验
  • ADO.NET Entity Framework创建 School 示例数据库(实体框架快速入门)
  • 这么多年来,程序设计上让我值得骄傲的3件小事情
  • postfix的基本配置
  • C#通用类库--DOS常用命令
  • 《Win32多线程程序设计》学习笔记 第9章 使用C++
  • 对struts一点理解总结
  • 「前端」从UglifyJSPlugin强制开启css压缩探究webpack插件运行机制
  • 【跃迁之路】【585天】程序员高效学习方法论探索系列(实验阶段342-2018.09.13)...
  • Angularjs之国际化
  • Create React App 使用
  • Druid 在有赞的实践
  • If…else
  • java 多线程基础, 我觉得还是有必要看看的
  • Linux编程学习笔记 | Linux多线程学习[2] - 线程的同步
  • React-redux的原理以及使用
  • Redash本地开发环境搭建
  • Shell编程
  • 机器学习学习笔记一
  • 简单数学运算程序(不定期更新)
  • 可能是历史上最全的CC0版权可以免费商用的图片网站
  • 实习面试笔记
  • 首页查询功能的一次实现过程
  • 数据仓库的几种建模方法
  • 写代码的正确姿势
  • 学习使用ExpressJS 4.0中的新Router
  • [地铁译]使用SSD缓存应用数据——Moneta项目: 低成本优化的下一代EVCache ...
  • ​TypeScript都不会用,也敢说会前端?
  • # Apache SeaTunnel 究竟是什么?
  • #中的引用型是什么意识_Java中四种引用有什么区别以及应用场景
  • %@ page import=%的用法
  • (42)STM32——LCD显示屏实验笔记
  • (MATLAB)第五章-矩阵运算
  • (附源码)计算机毕业设计SSM疫情下的学生出入管理系统
  • (六)库存超卖案例实战——使用mysql分布式锁解决“超卖”问题
  • (全注解开发)学习Spring-MVC的第三天
  • (四)JPA - JQPL 实现增删改查
  • (一)使用IDEA创建Maven项目和Maven使用入门(配图详解)
  • (一)硬件制作--从零开始自制linux掌上电脑(F1C200S) <嵌入式项目>
  • (转)nsfocus-绿盟科技笔试题目
  • (转)PlayerPrefs在Windows下存到哪里去了?
  • (自用)learnOpenGL学习总结-高级OpenGL-抗锯齿
  • .【机器学习】隐马尔可夫模型(Hidden Markov Model,HMM)
  • .bat批处理(二):%0 %1——给批处理脚本传递参数
  • .Net 6.0 处理跨域的方式
  • .NET Core工程编译事件$(TargetDir)变量为空引发的思考
  • .NET Framework杂记