C#的位运算符&,| ,^ ,<<,>>2008年08月01日 星期五 15:52位 运 算
我们知道任何信息在计算机中都是以二进制的形式保存的位操作符就是对数
据按二进制位进行运算的操作符C#语言中的位操作符有

 & 与
| 或
^ 异或
~ 取补
<< 左移
>> 右移

其中取补只有一个操作数而其它的位操作符都有两个操作数这些运算都不
会产生溢出位操作符的操作数为整型或者是可以转换为整型的任何其它类型
与运算
操作数按二进制位进行与运算运算规则为
0&0=0
0&1=0
1&0=0
1&1=1
这说明除了两个位均为1 与运算结果为1 其它情况下与运算结果均为0 比
如2 和10 进行与运算
2 的二进制表示 00000010
10 的二进制表示 00001010
与运算的结果 00000010
1 所以2&10 的结果为2
或运算
操作数按二进制位进行与运算运算规则为
0|0=0
0|1=1
1|0=1
1|1=1
这说明除了两个位均为0 或运算结果为0 其它情况下或运算结果均为1 比
如2 和10 进行或运算
2 的二进制表示 00000010
10 的二进制表示 00001010
或运算的结果 00001010
所以2|10 的结果为10
异或运算
操作数按二进制位进行与运算运算规则为
0^0=0
0^1=0
1^0=0
1^1=1
这说明当两个位相同时异或运算结果为0 不相同时异或运算结果为1 比如
2 和10 进行异或运算
2 的二进制表示 00000010
10 的二进制表示 00001010
异或运算的结果 00001000
所以2^10 的结果为8
取补运算
取补运算对操作数的每一位取补如对10 取补结果为
10 的二进制表示 00001010
与运算的结果 11110101
这个二进制对应的具体值与数据类型有关下面的例子清楚地说明了这一点
程序清单7-5

using System;
class Test
{
public static void Main() {
short a = ;
ushort b = ;
int c = ;
uint d = ;
Console.WriteLine(~);
Console.WriteLine("short: {0}",~a);
Console.WriteLine("ushort: {0}",~b);
Console.WriteLine("int: {0}",~c);
Console.WriteLine("uint: {0}",~d);
}
}

正确的输出是
-11
short: -11
ushort: -11
int: -11
uint: 4294967285
移位运算
左移运算将操作数按位左移高位被丢弃低位顺序补0 比如10 的二进制为
00001010 左移一位为00010100 20 左移二位为00101000 40
右移运算时如果操作数x 是int 或long 型 时x 的低位被丢弃其它各位顺序
依次右移如果x 是非负数最高位设成零如果x 为负数则最高位设为1 而当x
的类型为uint 或ulong 型时x 的低位将被丢弃其它各位顺序依次右移高位设为0
比如
程序清单7-6

using System;
class Test
{
public static void Main() {
int x = ;
Console.WriteLine(x);
int y = x>>;
Console.WriteLine(y);
y = y>>;
Console.WriteLine(y);
y = y>>;
Console.WriteLine(y);
}
}

上面这段程序的输出为
16
4
1
0
如果把上面x 的初始值设为-16 则程序的输出为
-16
-4
-1
-1

C#的位运算符的更多相关文章

  1. java的布尔运算符和位运算符

    1.布尔运算符 &&  逻辑与: ||   逻辑或: !=  不等于: 三元操作符:?: :表达式为  condition?expression1:expression2(当条件为真时 ...

  2. c 语言的位运算符复习

    转载和修正,原文连接:http://www.cnblogs.com/911/archive/2008/05/20/1203477.html 位运算是指按二进制进行的运算.在系统软件中,常常需要处理二进 ...

  3. Java的算数运算符、关系运算符、逻辑运算符、位运算符

    JAVA的运算符,分为四类: 算数运算符.关系运算符.逻辑运算符.位运算符 算数运算符(9):+  -  *  /  %  ++  -- 关系运算符(6):==  !=  >  >=  & ...

  4. c语言基础表达式, 关系运算符, 逻辑运算符, 位运算符, 数据的取值范围, 分支结构(if...else, switch...case)

    1.表达式: 表达式的判断是有无结果(值), 最简单的表达式是一个常量或变量, 如:12, a, 3 + 1, a + b, a + 5 都是表达式 2.BOOL(布尔)数据类型: c语言中除了基本数 ...

  5. PHP中的运算符---位运算符、递增递减运算符、三元运算符、字符串运算符、数组运算符、类型运算符、错误控制运算符

    1.位运算符 位运算符用来对整型数的指定位进行置位,如果被操作数是字符串,则对该字符串的ASCII码值进行操作. 运算类型 运算符 举例 结果 按位与 & $a & $b 将$a 与 ...

  6. ECMAScript 位运算符

    位运算符是在数字底层(即表示数字的 32 个数位)进行操作的. 重温整数 ECMAScript 整数有两种类型,即有符号整数(允许用正数和负数)和无符号整数(只允许用正数).在 ECMAScript ...

  7. javascript运算符——位运算符

    × 目录 [1]二进制 [2]非 [3]与[4]或[5]异或[6]左移[7]右移[8]>>>[9]应用 前面的话 位运算符是非常底层的运算,由于其很不直观,所以并不常用.但是,其速度 ...

  8. PHP中为位运算符(几乎很少用)

    PHP语言里的位运算符&.|.^ .~.〈〈 .〉〉 "&" 按位与运算 按位与运算符"&"是双目运算符.其功能是参与运算的两数各对应的 ...

  9. PHP运算符:算数运算符、逻辑运算符、三目运算符、位运算符、字符串运算符。

    赋值运算符 PHP 赋值运算符用于向变量写值. PHP 中基础的赋值运算符是 "=". 这意味着右侧复制表达式会为左侧运算数设置值. _______________________ ...

  10. Java的位运算符详解实例——与(&)、非(~)、或(|)、异或(^)

    位运算符主要针对二进制,它包括了:“与”.“非”.“或”.“异或”.从表面上看似乎有点像逻辑运算符,但逻辑运算符是针对两个关系运算符来进行逻辑运算,而位运算符主要针对两个二进制数的位进行逻辑运算.下面 ...

随机推荐

  1. DataGrid简单数据绑定实例2

    1.Image列显示: 后台绑定: //获取文件夹下的图片 string path = @"K:\Picture\jpg"; private void Button_Click(o ...

  2. 10个最实用的Linux命令

    收集了一些对于Linux新手最基本但最有用的Linux命令.你完全可以键入这些命令来管理你的服务器.这些命令对于学习vps或服务器管理的新手最为简便.1.List命令 ls -a //列出所有文件 l ...

  3. winform中获取Properties窗口的值.

    我写这个工具,主要是多次在将自己的代码和别人代码做对比时,不想繁琐地用眼看他设置的和自己设置的哪里不一样. using System; using System.Collections.Generic ...

  4. c标签的使用方法

    1. c:forEach <c:forEach items="> 注意varStatus相当于for循环计数器,从1开始,用${varStatus.count}获得计数器的值.而 ...

  5. Cordova自定义插件

    项目原因需要自定义Cordova插件,下面把实现过程记录以便将来查阅.工程为Eclipse下的Android工程,该工程已经引入Cordova.Cordova版本4.0.2.1.定义插件类OpenAp ...

  6. ORACLE网络配置大全没有比这个更详细的【weber出品】

    一.起篇 现在怎么说也是互联网时代,数据库也要联网,很多朋友学习Oracle的时候无外乎搭建的是以下两种学习环境: 1.直接在windows环境下安装Oracle后直接sqlplus连接. 2.在wi ...

  7. JQuery原理介绍及学习方法

    前言 对于JQuery,想必大家都很熟悉.目前,很多web项目,在实施的过程中,考虑到各浏览器原生JS API的兼容性,大都会选用JQuery或类似于JQuery这样的框架来进行网页效果开发.JQue ...

  8. 利用try-catch判断变量是已声明未赋值还是未声明

    目的是如果一个变量是已声明未赋值,就可以直接赋值,并且不能改变变量的作用域: 如果未声明的话,就重新声明, 在网上搜了下,常见的方法是if(typeof(a)=='undefined'){var a= ...

  9. HTML&CSS基础学习笔记1.12—引入样式表

    引入样式表 我么都知道HTML是网页内容的载体,CSS样式是表现,就像网页的外衣.如何让网页披上这层外衣呢? 这个时候就需要用<link>标签了,它起到将CSS样式链入页面的作用. < ...

  10. Python学习笔记总结(二)函数和模块

    一.函数 函数的作用:可以计算出一个返回值,最大化代码重用,最小化代码冗余,流程的分解. 1.函数相关的语句和表达式 语句        例子 Calls        myfunc(‘diege', ...