C# 位运算符整理_C#教程

C#支持的位逻辑运算符如表2.9所示。


运算符号

意义

运算对象类型

运算结果类型

对象数

实例

~

位逻辑运算

整型,字符型

整型

1

~a

&

位逻辑运算

2

a & b

|

位逻辑运算

2

a | b

^

位逻辑异或运算

2

a ^ b

<< 

左移运算

2

a<<4

>> 

右移运算

2

a>>2

 

1、位逻辑非运算

位逻辑非运算是单目的,只有一个运算对象。位逻辑非运算按位对运算对象的值进行非运算,即:如果某一位等于0,就将其转变为1;如果某一位等于1,就将其转变为0。

比如,对二进制的10010001进行位逻辑非运算,结果等于01101110,用十进制表示就是:

~145等于110;对二进制的01010101进行位逻辑非运算,结果等于10101010。用十进制表示就是~85等于176。

 

2、位逻辑与运算

位逻辑与运算将两个运算对象按位进行与运算。与运算的规则:1与1等于1,1与0等于0。

比如:10010001(二进制)&11110000等于10010000(二进制)。

 

3、位逻辑或运算

位逻辑或运算将两个运算对象按位进行或运算。或运算的规则是:1或1等1,1或0等于1,

0或0等于0。比如10010001(二进制)| 11110000(二进制)等于11110001(二进制)。

 

4、位逻辑异或运算

位逻辑异或运算将两个运算对象按位进行异或运算。异或运算的规则是:1异或1等于0,

1异或0等于1,0异或0等于0。即:相同得0,相异得1。

比如:10010001(二进制)^11110000(二进制)等于01100001(二进制)。

 

5、位左移运算

位左移运算将整个数按位左移若干位,左移后空出的部分0。比如:8位的byte型变量

byte a=0x65(即二进制的01100101),将其左移3位:a<<3的结果是0x27(即二进制的00101000)。

 

6、位右移运算

 位右移运算将整个数按位右移若干位,右移后空出的部分填0。比如:8位的byte型变量

Byte a=0x65(既(二进制的01100101))将其右移3位:a>>3的结果是0x0c(二进制00001100)。

 

在进行位与、或、异或运算时,如果两个运算对象的类型一致,则运算结果的类型就是运算对象的类型。比如对两个int变量a和b做与运算,运算结果的类型还是int型。如果两个运算

对象的类型不一致,则C#要对不一致的类型进行类型转换,变成一致的类型,然后进行运算。

类型转换的规则同算术运算中整型量的转换则一致。

 

由位运算符连接整型量而成的表达式就是位运算表达式。

时间: 2024-09-29 13:39:55

C# 位运算符整理_C#教程的相关文章

C# 常见操作符整理_C#教程

常见的操作符 赋值操作符:= 复合赋值运算符:+=,-=,*=,/=,%= 算数运算符:+,-,*,/,%(ß二元运算符),++,--(ß一元运算符) 条件运算符:>,<,>=,<=,!=,== 逻辑运算符:&&,||,|,! 几乎所有的操作符都只能操作基本数据类型,但是"=","=="和"!=",这些操作符能操作所有的对象.除此以外String类支持"+"和"+="

C#开发教程之ftp操作方法整理_C#教程

1.最近项目开发涉及到ftp操作.发现FtpWebRequest类有些操作很麻烦, 例如创建目录只能创建一级目录,多级就失败.删除目录只能删除最后一级的空目录.同样下载也是. 故写下帮助类方便使用. 2.调用方法展示, var ftp = new FtpHelper("111.111.111.111", "xxxxxxx", "xxxxxx");//初始化ftp,创建ftp对象 ftp.uploadFile("F:\\wms.zip&q

C# 超高面试题收集整理_C#教程

1. 描述线程与进程的区别? 什么是Windows服务,它的生命周期与标准的EXE程序有什么不同 Windows上的单个进程所能访问的最大内存量是多少?它与系统的最大虚拟内存一样吗?这对于系统设计有什么影响? EXE和DLL之间的区别是什么? 什么是强类型,什么是弱类型?哪种更好些?为什么? PID是什么?在做系统的故障排除时如何使用它? 单个TCP/IP端口上能够侦听多少个进程? 什么是GAC?它解决了什么问题? 2. 阐述面向接口.面向对象.面向方面编程的区别 什么是Interface?它与

C语言位运算符:与、或、异或、取反、左移与右移详细介绍_C 语言

位运算是指按二进制进行的运算.在系统软件中,常常需要处理二进制位的问题.C语言提供了6个位操作运算符.这些运算符只能用于整型操作数,即只能用于带符号或无符号的char,short,int与long类型. C语言提供的位运算符列表:运算符 含义 描述& 按位与 如果两个相应的二进制位都为1,则该位的结果值为1,否则为0| 按位或 两个相应的二进制位中只要有一个为1,该位的结果值为1^ 按位异或 若参加运算的两个二进制位值相同则为0,否则为1~ 取反 ~是一元运算符,用来对一个二进制数按位取反,即将

C++位运算符详解(异或运算符和移位运算符)_C 语言

什么是位运算 位运算符按二进制进行运算,这些运算符只能用于整数类型的操作.如:char,short,int,long 通过位运算符来获取高位值和低位值 int a=0x1234; int high,low; high = (a>>8) &0x00ff; low = a & 0x00ff; 左移运算符和右移运算符(<<和>>) 左移是将一个二进制数,移动若干位,右边空出的位置用0来填补,高位左移溢出应该舍弃该高位. 如:inta = 8, a = 0000

javascript运算符整理

说起运算符,基本上各类编程语言中都会涉及,使用方法大同小异.今天在这里以javascript做简单的整理.   总得来说运算符还是比较的多,大致可以分为以下几种类型: 一元运算符 位运算符 布尔运算符 乘性运算符 加性运算符 关系运算符 等性运算符 条件运算符 赋值运算符 逗号运算符 可以说只要学习过变成语言对这些运算符应该是并不陌生的,只要有逻辑或者是计算都会用到上面的运算符,之前我也是比较零散的使用过,从来没有系统的学习和整理过这些运算符到底怎么使用?之间有什么区别和联系?有什么使用上的技巧

php 位运算符

位运算符  位运算符允许对整型数中指定的位进行置位.如果左右参数都是字符串,则位运算符将操作字符的 ASCII 值.  在 32 位系统上不要右移超过 32 位.不要在结果可能超过 32 位的情况下左移. 例子                  名称                               结果  $a & $b   And(按位与) 将把 $a 和 $b 中都为 1 的位设为 1.  $a | $b    Or(按位或)   将把 $a 或者 $b 中为 1 的位设为 1.

java的按位运算符

按位运算符允许我们操作一个整数主数据类型中的单个"比特",即二进制位.按位运算符会对两个自变量中对应的位执行布尔代数,并最终生成一个结果. 按位运算来源于C语言的低级操作.我们经常都要直接操纵硬件,需要频繁设置硬件寄存器内的二进制位.Java的设计初衷是嵌入电视顶置盒内,所以这种低级操作仍被保留下来了.然而,由于操作系统的进步,现在也许不必过于频繁地进行按位运算. 若两个输入位都是1,则按位AND运算符(&)在输出位里生成一个1:否则生成0.若两个输入位里至少有一个是1,则按位

Java编程那些事儿25—位运算符

4.5 二进制运算符 由于计算机内部的数据都以二进制的形式存在,所以在Java语言中提供了直接操作二进制的运算符,这就是下面要讲解的位运算符和移位运算符. 使用二进制的运算符,可以直接在二进制的基础上对数字进行操作,执行的效率比一般的数学运算符高的多,该类运算符大量适用于网络编程.硬件编程等领域. 二进制运算符在数学上的意义比较有限. 在Java代码中,直接书写和输出的数值默认是十进制,Java代码中无法直接书写二进制数值,但是可以书写八进制和十六进制数字,八进制以数字0开头,例如016,十六进