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

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

按位取反:~

位与:&

位或:|

位异或:^

左移位运算符:<<

将一个运算对象的各二进制位全部左移若干位(左边的二进制位丢弃,右边补0)。
若左移时舍弃的高位不包含1,则每左移一位,相当于该数乘以2。

右移位运算符:>>

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

无符号右移运算符:>>>

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

<2>位字段

如下C++代码:

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

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

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

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

-------------------------------------------------------------------------------------------------------------------------------------------------------

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

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

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

#include <iostream>

using namespace std;

int invert_end(int num,int bits)    //第一个表示传进来的数值,第二个是让这个数值的后多少位反转
{
int mask=; //此时全部位为0
int temp=; //此时它的最后一位是1 while (bits>)
{
mask=mask|temp; //或,每次只把1位置为1
temp=temp<<; //它的唯一一个是1的位向左移
bits--;
} return num^mask; //mask的后几位已经为1,异或即可
} int main(void)
{
cout<<sizeof(int)<<endl;
int val;
cout<<"输入一正整数:\n";
cin>>val; int res=invert_end(val,);
cout<<val<<" "<<res; cin.get();
return ;
}

C/C++ 位操作的更多相关文章

  1. 《Entity Framework 6 Recipes》中文翻译系列 (19) -----第三章 查询之使用位操作和多属性连接(join)

    翻译的初衷以及为什么选择<Entity Framework 6 Recipes>来学习,请看本系列开篇 3-16  过滤中使用位操作 问题 你想在查询的过滤条件中使用位操作. 解决方案 假 ...

  2. 如何获取byte的各个bit值以及常见位操作

    项目中通过信号采集板的数据获取车上仪表盘指示灯的信息,将接收到的数据转成byte后,还要将每一个Byte的各个Bit值分离出来,这样才知道每个bit的值代表的具体信息.这里记录下如何获取byte的各个 ...

  3. php strtotime 在32位操作系统下的限制

    php strtotime 在32位操作系统下的限制 <?php class DateHelper{ /** * 在32位操作系统下,超过 2038-01-19 03:14:07 ,会溢出 * ...

  4. C#按位操作,直接操作INT数据类型的某一位

    /// <summary> /// 根据Int类型的值,返回用1或0(对应True或Flase)填充的数组 /// <remarks>从右侧开始向左索引(0~31)</r ...

  5. 64位操作系统 通过ODP.NET 访问ORACLE 11g

    摘要:64位操作系统部署.NET 程序访问oracle时,无法连接问题.(注意:客户端是64位系统 ,服务端是否64位 还是32位无关.) 1.到oracle 官网搜索相关版本的 ODAC网址: ht ...

  6. java位操作总结

    在计算机中所有数据都是以二进制的形式储存的. 位运算其实就是直接对在内存中的二进制数据进行操作,因此处理数据的速度非常快. 方便演示,首先写个二进制打印方法: private static void ...

  7. (原)解决.NET 32位程序运行在64位操作系统下的兼容性问题

    背景:一个第三方组件是C++.NET  32位开发的,后被C#(基于FrameWork4.0)调用并封装成组件,此二次封装的组件无法运行于64位操作系统上.        开发环境:VS2012:解决 ...

  8. (Array,位操作)137. Single Number II

    Given an array of integers, every element appears three times except for one. Find that single one. ...

  9. delphi.位操作

    位操作网上有很多介绍,请上网google/baidu,比如: 位操作技巧实例大全: http://blog.csdn.net/g_spider/article/details/5750665 位操作基 ...

  10. iis6|iis7|配置URLRewriter|64位操作系统下|.net2.0|.net4.0|配置URLRewriter|Web.config配置详情

    想必很多ASP.NET的码友们在IIS配置伪静态被严重纠结过不止一次两次,本园主经过多次站点伪静态配置,总结了一下,IIS版本:IIS 6.IIS 7,服务器:Windows Server 2003. ...

随机推荐

  1. Objective-C Protocols

    Objective-C allows you to define protocols, which declare the methods expected to be used for a part ...

  2. Objective-C Loops

    There may be a situation, when you need to execute a block of code several number of times. In gener ...

  3. Yii 2.0排序功能的使用

    在Yii2.0项目的实际开发中,经常会遇到使用Yii2.0自带的排序功能.下面是排序功能的具体使用方法. 一.设置排序规则 注意引入Sort类,如:use yii\data\Sort; // 设置排序 ...

  4. explian使用介绍

    1).id列数字越大越先执行,如果说数字一样大,那么就从上往下依次执行,id列为null的就表是这是一个结果集,不需要使用它来进行查询. 2).select_type列常见的有:A:simple:表示 ...

  5. dp 20190618

    C. Party Lemonade 这个题目是贪心,开始我以为是背包,不过也不太好背包,因为这个L都已经是1e9了. 这个题目怎么贪心呢?它是因为这里有一个二倍的关系,所以说val[i]=val[i- ...

  6. C# Process.Start方法

    System.Diagnostics.Process.Start(); 主要功能: 1.打开某个链接网址(弹窗). 2.定位打开某个文件目录. 3.打开系统特殊文件夹,如“控制面板”等. Proces ...

  7. 怎么在webstorm中设置代码模板

    大家都知道webstorm对程序员来说是一个很好用的IDE.我们输入几个关键字,webstorm就会给出提示,大大提高了我们的开发效率,可有时候webstorm的默认设置不能满足我们的个性化代码模板的 ...

  8. iview 验证 trigger: 'blur,change', 同时加两个,省的每次还想input 还是 select

    iview 验证 trigger: 'blur,change', 同时加两个,省的每次还想input 还是 select dataRuleValidate: { name: [{ required: ...

  9. Koa -- 基于 Node.js 平台的下一代 web 开发框架 koa.bootcss.com

    Koa -- 基于 Node.js 平台的下一代 web 开发框架 koa.bootcss.com

  10. 分享一个Delphi跨平台Http库的封装,一个Delphi跨平台TCP库的封装

    { 单元名:跨平台的TCP客户端库封装 作者:5bug 网站:http://www.5bug.wang } unit uCPTcpClient; interface uses System.Class ...