当前位置:  编程技术>c/c++/嵌入式

C/C++位操作实例总结

    来源: 互联网  发布时间:2014-10-27

    本文导语:  本文详细叙述了C/C++的位操作,这是C/C++程序设计中非常重要的概念。本文实例对于C/C++初学者来说也具有很好的复习与参考价值。具体分析如下: C/C++对位操作有如下方法: 一、位操作运算符(注意:下面几个运算符不改变原来的...

本文详细叙述了C/C++的位操作,这是C/C++程序设计中非常重要的概念。本文实例对于C/C++初学者来说也具有很好的复习与参考价值。具体分析如下:

C/C++对位操作有如下方法:

一、位操作运算符(注意:下面几个运算符不改变原来的变量的值,只是获得运算的结果即一个新值)

按位取反:~

位与:&

位或:|

位异或:^

左移位运算符:

将一个数的各二进制位全部右移若干位,正数左补0,负数左补1,右边丢弃。
操作数每右移一位,相当于该数除以2。
无符号右移运算符:>>>

>>> 运算符把 expression1 的各个位向右移 expression2 指定的位数。右移后左边空出的位用零来填充。移出右边的位被丢弃。

二、位字段

C++代码如下:

struct bits
{
  unsigned int a:1;
  unsigned int b:1;
  unsigned int c:10;
  unsigned int d:21;
};

位字段由一个结构声明,该结构声明为每个字段提供标签,并决定标签字段的宽度.

上面的使用unsigned int作为位字段结构的基本布局单元,因此即使一个结构只有一个一位的成员字段,该结构也和一个unsigned int的大小相同,上面用sizeof看为8,机器sizeof(unsigned int)为4,若把最后一个改为d:20,则本机器的sizeof刚好为4.

另外,十六进制前面加 0x,八进制前加 0

实例:写一个函数,返回将给定数字的后给定位数反转,即0变1,1变0

思路:是将整个数的全部位取反了,不合适.用异或^,把给定值和一个后面几位全部是1前面剩下的都是0的数^,即可.

本例关键是怎么获得那个后面几位全是1的数

#include 
using namespace std;
int invert_end(int num,int bits)  //第一个表示传进来的数值,第二个是让这个数值的后多少位反转
{
  int mask=0;  //此时全部位为0
  int temp=1;  //此时它的最后一位是1
  while (bits>0)
  {
    mask=mask|temp;  //或,每次只把1位置为1
    temp=temp

    
 
 

您可能感兴趣的文章:

  • .NET下 c#通过COM组件操作并导出Excel实例代码
  • Python文件操作类操作实例详解
  • PHP实现的连贯操作、链式操作实例
  • 大家帮我推荐些在linux下用c语言对数据库操作编程的实例或资料吧!谢谢!
  • C#实现装箱与拆箱操作简单实例
  • c#剪切板操作的简单实例
  • yii操作cookie实例简介
  • 请问如何在自定然义的类中如MyClass,不用new这个操作符来产生一个这个类的实例
  • Linux操作系统下Oracle数据库多实例启动方式及修改内存
  • c#判断操作系统位数实例代码
  • 数组循环移位操作实例
  • C#的WebBrowser操作frame实例解析
  • java文件操作代码片断实例实现统计文件中字母出现的个数功能
  • Android对sdcard扩展卡文件操作实例详解
  • C# WinForm中Panel实现用鼠标操作滚动条的实例方法
  • C#文件操作的简单实例
  • VC实现ODBC数据库操作实例解析
  • asp.net操作cookie实例代码
  • Jquery操作radio的简单实例
  • C#读写xml配置文件(LINQ操作实例)
  • jQuery 操作下拉列表框的实例分享
  • windows7操作系统介绍及各种使用技巧总结
  • JQuery对表格进行操作的常用技巧总结
  • jquery操作复选框(checkbox)的12个小技巧总结
  • java中的正则操作方法总结
  • 基于java中正则操作的方法总结
  • C#字符串常见操作总结详解
  • C#文件路径操作详细总结
  • Codeigniter操作数据库表的优化写法总结
  • shell数组操作简明总结
  • 总结的7个shell字符串操作方法和实例分享
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • C++ Stacks(堆栈) 成员 操作:比较和分配堆栈
  • 谁有操作系统PV操作的例子???谁有操作系统PV操作的例子???谢谢!!
  • C++ Strings(字符串) 成员 Operators:操作符,用于字符串比较和赋值
  • 已安装了Windows操作系统,还想安装Linux。却还想在开机选择操作系统时由Windows引导,请问如何操作。在线等待
  • C++ I/O 成员 flags():操作flags
  • 请问LINUX操作系统是怎样对外围设备进行操作的
  • C++ I/O 成员 width():操作域宽度
  • 什么样的操作最耗费服务器的IO操作?
  • c#对象中两种copy操作:深拷贝(Deep Copy)与浅拷贝(Shallow Copy)
  • 无操作系统下对U盘的操作
  • Xcode介绍及创建工程和工程依赖操作步骤
  • 请问命令行操作下怎么改Linux操作系统的日期和时间?
  • MyEclipse如何查看和设置文件编码格式相关操作
  • 正在学操作系统原理,做操作系统方面的实验用那种工具较好?
  • Html checkbox标签如何设置默认选中以及用js操作checkbox代码示例
  • 请问16位操作系统和32位操作系统的区别?
  • c/c++ 操作符优先级参考
  • 基于linux操作系统之上操作LCD问题,急???
  • javascript操作html复选框checkbox:如何判断复选框是否被选中
  • 哪位大侠知道Linux里的有名管道传送数据快不快?有名管道操作的过程是否有读写硬盘的操作?
  • Plesk 中操作和设置 Docker 容器
  • 如何在一个用户对application操作时防止别的用户对它操作?(好难啊)




  • 特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3