【C语言天天练(二二)】位操作
C的位运算符
1、二进制反码或按位取反:~
~(10011010) = (01100101)。
假设val是一个unsigned char,~val不改名原来val的值。
2、位与:&
二进制运算符&通过对两个操作数逐位进行比較产生一个新值。
(10010011)&(00111101)=(00010001)。
C中的一个组合的位与赋值运算符:&=。
3、位或:|
二进制运算符|通过对两个操作数逐位进行比較产生一个新值。
(10010011)|(00111101)=(10111111)。
C中的一个组合的位或赋值运算符:|=。
4、位异或:^
二进制运算符^对两个操作数逐位进行比較。对于每一个位,假设操作数中相应位有一个为1。结果为1。
(100100011)^(00111101)=(10101110)。
C中有一个组合的位异或赋值运算符:^=。
5、掩码:“位与”运算符通常跟掩码一起使用。
掩码是某些位设为开(1)而某些位设置为关(0)的位组合。
flags = flags & MASK。
6、打开位。
如。对于flags。想要打开它的第二位,能够使用flags = flags | (1<<2).
7、关闭位。如,对于flags。想要关闭它的第二位,能够使用flags = flags & (~(1<<2))。
8、转置位。
转置一个位表示假设该位打开。则关闭该位。假设该位关闭,则打开该位。
如。对于flags,想要转置它的第二位,能够使用flags = flags ^ (1<<2)。
9、移位运算符。
左移:<<。右移:>>。左移运算符<<将其左側操作数的值的每位向左移动,移动的位数由其右側操作数指定。
空出的位用0填充,而且丢弃移出左側操作数末端的位。
右側位运算符>>将其左側操作数的值的每位向右移动,移动的位数由其右側操作数指定。丢弃移出左側操作数右端的位。
10、移位运算符:移位运算符能够提供快捷、高效的对2的幂的乘法和除法。
number << n : number乘以2的n次幂。
number >> n : 假设number非负,则用number除以2的n次幂。
【C语言天天练(二二)】位操作的更多相关文章
- 【C语言天天练(二四)】内存分配
引言: 对于C语言程序,了解它执行时在内存中是怎样分配的对于我们理解它的执行机制是很实用的.以下就总结一下C语言程序的一些内存分配知识. 一 一段C程序.编译连接后形成的可运行文件一般有代码段.数据段 ...
- 【C语言天天练(二)】statickeyword
引言: statickeyword不仅能够修饰变量.并且能够修饰函数.了解它的使用方法,不仅对阅读别人的代码有帮助,也有助于自己写出更加健壮的程序. 使用方法: ...
- 【C语言天天练(二一)】内联函数
引言:调用函数时,一般会由于建立调用.传递參数.跳转到函数代码并返回等花费掉一些时间,C语言的解决的方法是使用类函数宏.在C99中,还提出了第二种方法:内联函数. 内联 ...
- 【C语言天天练(二)】预处理
引言: 学C语言之初.一提到预处理,脑子里想到的就是#define的宏定义以及#include包括的头文件.后来随着对C的深入学习发现.预处理不止这些.比方条件编译.提前定义的宏等等.以下对此进行总结 ...
- 【C语言天天练(十一)】深入理解指针
引言:在C语言中.指针的地位是不言而喻的,要想非常好的掌握C语言,掌握指针是必须的,这也是C语言不同于其它语言的地方. (一)指针的指针 样例: int i; int *pi;/*把pi初始化为指向变 ...
- 【C语言天天练(二三)】errno变量
引言: 在C编程中,errno是个必不可少的变量.特别是在网络编程中. 假设你没实用过errno,那仅仅能说明你的程序不够健壮. 为什么会使用errno呢?这是系统库设计中的一个无奈之举.他很多其它的 ...
- 【C语言天天练(九)】动态内存分配
引言:数组的元素存储于内存中连续的位置上.当一个数组被声明时.它所须要的内存在编译时就被分配. 可是,我们能够使用动态内存分配在执行时为它分配内存. 一块内存的生命周期能够分为四个阶段:分配.初始化. ...
- 【C语言天天练(十五)】字符串输入函数fgets、gets和scanf
引言:假设想把一个字符串读到程序中.必须首先预留存储字符串的空间.然后使用输入函数来获取这个字符串. 读取字符串输入的第一件事是建立一个空间以存放读入的字符串. char *name; scanf(& ...
- 【C语言天天练(三)】typedef具体解释
引言: typedef能够看作type define的缩写,顾名思义就是类型定义,也就是说它仅仅是给已有的类型又一次定义了一个方便使用的别名.并没有产生新的数据类型. typedef与define的不 ...
随机推荐
- [转]OData and Authentication – Part 6 – Custom Basic Authentication
本文转自:https://blogs.msdn.microsoft.com/astoriateam/2010/07/21/odata-and-authentication-part-6-custom- ...
- php访问mysql数据库的步骤
官方说5.5开始就废弃mysql_query()这块东西很多,当然常用的就几个还是看手册吧. 这里简单记录一下.在我失忆之后可以找回一点记忆.最近一直用框架原生的都快忘了. 1.打开mysql连接 $ ...
- 十二、curator recipes之双重屏障DoubleBarrier
简介 curator实现了单个屏障barrier和双重屏障DoubleBarrier,单个屏障就是在一个进程里面设置了屏障,并等待其它进程去移除这个屏障,否则一直阻塞.双重屏障就是设置了两道屏障,两个 ...
- springboot的依赖注入报null的问题
最近使用springboot开发项目,使用到了依赖注入,频繁的碰到注入的对象报空指针,错误如下 java.lang.NullPointerException: null at com.mayihc.a ...
- SQL语句的拼凑
StringBuilder sql = new StringBuilder("SELECT * FROM t_customer WHERE 1=1"); /* * 2. 判断条件, ...
- 基于netcore对ElasitSearch客户端NEST查询功能的简单封装NEST.Repository
NEST.Repository A simple encapsulation with NEST client for search data form elasticsearch. github A ...
- OpenStack IceHouse 部署 - 3 - 控制节点部署
Mysql部署配置 安装 安装mysql,mysql的python绑定 apt-get install mysql-server 安装过程中会要求设定mysql的root账户的密码,这里假定设为my ...
- Web服务器学习总结(一):web服务器简介
一.WEB服务器 1.1.WEB服务器简介 1.Web服务器是指驻留于因特网上某种类型计算机的程序,是可以向发出请求的浏览器提供文档的程序.当Web浏览器(客户端)连到服务器上并请求文件时,服务器将处 ...
- 关于java赋值运算的一个小例子
直接贴代码,这个也是做题目中遇见的,觉得很好奇,查了一波,然后自己编写代码看了一下,果真如此,哈哈哈...... public class 关于Boolean的赋值运算 { public static ...
- ajax异步上传图片三种方案
转自:http://www.jb51.net/article/51180.htm 注:自己尝试了前两种,都可用: 目前常用的异步文件上传功能有几种,比较多见的如使用iframe框架形式,ajax功能效 ...