C#的位运算符
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#的位运算符的更多相关文章
- java的布尔运算符和位运算符
1.布尔运算符 && 逻辑与: || 逻辑或: != 不等于: 三元操作符:?: :表达式为 condition?expression1:expression2(当条件为真时 ...
- c 语言的位运算符复习
转载和修正,原文连接:http://www.cnblogs.com/911/archive/2008/05/20/1203477.html 位运算是指按二进制进行的运算.在系统软件中,常常需要处理二进 ...
- Java的算数运算符、关系运算符、逻辑运算符、位运算符
JAVA的运算符,分为四类: 算数运算符.关系运算符.逻辑运算符.位运算符 算数运算符(9):+ - * / % ++ -- 关系运算符(6):== != > >= & ...
- c语言基础表达式, 关系运算符, 逻辑运算符, 位运算符, 数据的取值范围, 分支结构(if...else, switch...case)
1.表达式: 表达式的判断是有无结果(值), 最简单的表达式是一个常量或变量, 如:12, a, 3 + 1, a + b, a + 5 都是表达式 2.BOOL(布尔)数据类型: c语言中除了基本数 ...
- PHP中的运算符---位运算符、递增递减运算符、三元运算符、字符串运算符、数组运算符、类型运算符、错误控制运算符
1.位运算符 位运算符用来对整型数的指定位进行置位,如果被操作数是字符串,则对该字符串的ASCII码值进行操作. 运算类型 运算符 举例 结果 按位与 & $a & $b 将$a 与 ...
- ECMAScript 位运算符
位运算符是在数字底层(即表示数字的 32 个数位)进行操作的. 重温整数 ECMAScript 整数有两种类型,即有符号整数(允许用正数和负数)和无符号整数(只允许用正数).在 ECMAScript ...
- javascript运算符——位运算符
× 目录 [1]二进制 [2]非 [3]与[4]或[5]异或[6]左移[7]右移[8]>>>[9]应用 前面的话 位运算符是非常底层的运算,由于其很不直观,所以并不常用.但是,其速度 ...
- PHP中为位运算符(几乎很少用)
PHP语言里的位运算符&.|.^ .~.〈〈 .〉〉 "&" 按位与运算 按位与运算符"&"是双目运算符.其功能是参与运算的两数各对应的 ...
- PHP运算符:算数运算符、逻辑运算符、三目运算符、位运算符、字符串运算符。
赋值运算符 PHP 赋值运算符用于向变量写值. PHP 中基础的赋值运算符是 "=". 这意味着右侧复制表达式会为左侧运算数设置值. _______________________ ...
- Java的位运算符详解实例——与(&)、非(~)、或(|)、异或(^)
位运算符主要针对二进制,它包括了:“与”.“非”.“或”.“异或”.从表面上看似乎有点像逻辑运算符,但逻辑运算符是针对两个关系运算符来进行逻辑运算,而位运算符主要针对两个二进制数的位进行逻辑运算.下面 ...
随机推荐
- pd的django个人博客教程----1:效果展示等
开发环境同to do list 1:首页:localhost/pd/ 2:导航栏测试或者生活点入: 测试:localhost/category/?cid=1 3:点击文章后进入文章显示页面 e.g:进 ...
- Linux操作系统分析__破解操作系统的奥秘
学号:SA12226343 姓名:sunhongbo 一.操作系统工作的基础 存储程序计算机和堆栈(函数调用堆栈)机制以及中断机制是操作系统工作的基础. 现代计算机仍采用存储程序计算机的结构体系和工 ...
- SQL Server 2005无日志文件附加数据库
公司网站运营两年多了,日志文件超级大,在重装系统的时候,为了省事,就没有备份日志文件,而且是没有分离就把日志文件给删掉了(下次一定要记得先分离再删日志文件).结果造成数据库怎么都附加不上.出现错误. ...
- ECSTORE 新建APP应用
1.用命令新建app // ----- window平台 ----- 直接运行 " 站点根目录/app/base/cmd.bat " 出现命令行后输入 dev:new app my ...
- Python 使用for代替in判断一个元素属于某个集合
string1 = raw_input("输入in之前的字符:")string2 = raw_input("输入in之后的字符:")x = ''if len(s ...
- UILabel自适应高度和自动换行
码: //初始化label UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0,0,0,0)]; //设置自动行数与字符换行 [l ...
- Net线程池设计
Net线程池设计 功能描述: 支持创建多个线程池,并统一管理 支持不同线程池的容量控制,以及最少活动线程的设置 支持不同线程池中活动线程的闲时设置,即线程空闲时间到期后即自动被回收 结构设计: Thr ...
- 不可小觑的Web开发编码规范
http://www.csdn.net/article/2013-10-21/2817235-coding-conventions-in-web-development 摘要:编码规范是一套规章制度, ...
- iTween_ValueTo函数
ValueTo:返回一个插值在两件值之间的值供回调函数使用; 网上没找到例子,自己试了下,直接看代码就明白了. , 0, 0),// gameObject.transform.position为0.0 ...
- TVS和一般的稳压二极管有什么区别
电压及电流的瞬态干扰是造成电子电路及设备损坏的主要原因,常给人们带来无法估量的损失.这些干扰通常来自于电力设备的起停操作.交流电网的不稳定.雷击干扰及静电放电等,瞬态干扰几乎无处不在.无时不有,使人感 ...