文档章节

位运算操作

小乞丐
 小乞丐
发布于 2013/08/22 17:00
字数 444
阅读 85
收藏 1

#include<stdio.h> /**位运算 / int main(void) { int i = 5; int j = 6; / i = 0101;j=0110 0101 & 0110 -------- 0100 = 4

  0&0 = 0
  1&0 = 0
  0&1 = 0
  1&1 = 1
*/
printf("按位与运算 i&j = %d \n",i&j);  
/** 
i = 0101;j=0110 
	0101
  | 0110
  --------
    0111 = 7

  0|0 = 0
  1|0 = 1
  0|1 = 1
  1|1 = 1
*/
printf("按位或运算 i|j = %d \n",i|j);
/** 
i = 0101;j=0110 
	0101
  | 0110
  --------
    0011 = 12

  0^0 = 0
  1^0 = 1
  0^1 = 1
  1^1 = 0
*/
printf("按位亦或运算 i^j = %d \n",i^j);
/** 
i = 0101;j=0110 
	0101
  | 0110
  --------
    0011 = 12

  0^0 = 0
  1^0 = 1
  0^1 = 1
  1^1 = 0
*/
printf("按位运算 i^j = %d \n",i^j);
/** 
	按二进制+1 取反
	i = 0000000....0101;     j=000000000.....0110 
        0000000....0101 +1     00000000.....0110 +1
		0000000....0110 = 6    00000000.....0111 = 7
		-6                      -7
**/
printf("按位取反运算 ~i = %d \n",~i);
printf("按位取反运算 ~j = %d \n",~j);
/**
	移位运算
	i<<2 把i的所有二进制左移2位,右边补0(左移n位,相当于乘以2的n次方)
	1)i=i*4;
	2)i=i>>2;
	2的速度远远大于1的速度。
	i=0000000....0101; 
	i=0000000..010100   --   0001 0100  = 16+4 = 20
	
	j>>2 把j的所有二进制右移2位,左边补0{左边最高位如果是1就补1,左边最高位是0就补0;符号位不变,左边补上符号位}
		(右移n位,相当于除以2的n次方{前提不能溢出,否则数据会丢失})
	1)j=j/4;
	2)j=j<<2;
	2的速度远远大于1的速度。
	j=000000000.....0110; 
	j=000000000.....0001   --   0000 0001  = 1 = 1
**/
printf("按位左移运算 i<<2 = %d \n",i<<2);
printf("按位右移运算 j>>2 = %d \n",j>>2);

/**
	另外java中 >>> 代表无符号移动
	忽略了符号位扩展,0补最高位
    无符号右移运算符>>> 只是对32位和64位的值有意义
**/
return 0;

}

© 著作权归作者所有

小乞丐

小乞丐

粉丝 10
博文 6
码字总数 2120
作品 0
成都
高级程序员
私信 提问
编程中位运算应用

位运算是计算机底层进行高级运算的基本操作,理解位运算含义,以及位运算的基本用法,是检验一个技术人员是否掌握基础关键, 今天就简单讲解一下基本位运算用法。 1.& 位与运算 1) 运算规则:...

abaojin
2016/01/05
66
0
Swift - 运算符

运算符是一中算数逻辑运算符号,用于告诉编译器执行一个数学或逻辑运算。 Swift 提供了以下几种运算符: 算术运算符 比较运算符 逻辑运算符 位运算符 赋值运算符 区间运算符 其他运算符 本章...

Albert_Lee
2017/11/16
0
0
python学习05:Python位运算符详解

位运算符通常在图形、图像处理和创建设备驱动等底层开发中使用。使用位运算符可以直接操作数值的原始 bit 位,尤其是在使用自定义的协议进行通信时,使用位运算符对原始数据进行编码和解码也...

太空堡垒185
10/09
26
0
linux shell 运算符 一览

Shell Operator shell 和其他编程语言一样,具有多种操作符(赋值操作符、算术运算符、逻辑操作符、关系运算符、位运算符、条件操作符、逗号运算符)。这些操作符可以组成复杂的运算表达式。...

liangxiaowei66
2014/04/11
0
0
c语言操作符的归纳

1:先从算数操作符说起: eg: * / % + - 并且它们的优先级依次降低,结合性从左向右 %操作符的两个操作数必须要为整数,获取的是整除后的余数,(也称为模运算), eg ; %可以用于取出整数...

triorwy
2017/11/16
0
0

没有更多内容

加载失败,请刷新页面

加载更多

不就是SELECT COUNT语句吗,竟然能被面试官虐的体无完肤

数据库查询相信很多人都不陌生,所有经常有人调侃程序员就是CRUD专员,这所谓的CRUD指的就是数据库的增删改查。 在数据库的增删改查操作中,使用最频繁的就是查询操作。而在所有查询操作中,...

HollisChuang
13分钟前
3
0
乐观锁和悲观锁

乐观锁和悲观锁 在并发环境下,事务的隔离性很难保证,因此会出现很多并发一致性的问题 事务的特性:原子性、一致性、隔离性、持久性 1、丢失修改:T1和T2两个事务对同一个数据进行修改,T1先...

大瑞清_liurq
22分钟前
4
0
Scrum敏捷价值观与原则

Scrum是一种迭代式增量软件开发过程,通常用于敏捷软件开发。如果还不知道Scrum敏捷开发的朋友们,请出门左转,点击 Scrum 了解。 敏捷价值观 个体和互动 高于 流程和工具 工作的软件 高于 ...

醉美閑聖
22分钟前
4
0
android焦点

final RelativeLayout relativeLayout=new RelativeLayout(context); relativeLayout.setClickable(true); relativeLayout.setFocusable(true); rel......

安卓工程师王恒
24分钟前
3
0
IP地址分配与中继设备简介

1. TCP/IP模型 TCP/IP协议是在OSI参考模型出现之间就被开发的,并广泛部署在计算机网络中。但是,后来由于概念混淆,TCP/IP模型的层次和名称往往与OSI模型的层次名称相互借用。如图1.所示。 ...

xiangyunyan
25分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部