九、运算符之按位运算符
usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;namespace_9.运算符之按位运算符{classProgram{staticvoidMain(string[]args){sbytea=65,b=-17;//65原码01000001反码01000001补码01000001//~65补码10111110反码11000001原码11000010=>-66Console.WriteLine("~{0}={1}",a,~a);//-17原码10010001反码11101110补码11101111//~(-17)补码00010000反码00010000原码00010000=>16Console.WriteLine("~{0}={1}",b,~b);//65原码01000001反码01000001补码01000001//-17原码10010001反码11101110补码11101111//65&-17补码01000001反码01000001原码01000001=>65Console.WriteLine("{0}&{1}={2}",a,b,a&b);//65原码01000001反码01000001补码01000001//-17原码10010001反码11101110补码11101111//65|-17补码11101111反码10010000原码10010001=>-17Console.WriteLine("{0}|{1}={2}",a,b,a|b);//65原码01000001反码01000001补码01000001//-17原码10010001反码11101110补码11101111//65^-17补码10101110反码11010001原码11010010=>-82Console.WriteLine("{0}^{1}={2}",a,b,a^b);//根据以上程式得出以下结论://(-x)=(~x+1)//(~x)=(-x-1)Console.ReadKey();}}}/***一、基本概念*1.数值类型在内存都是二进制补码形式进行存储。*2.对数值进行位运算符操作,实际上是对内存中的二进制位进行操作。**二、原码、反码和补码*1.正数的原码、反码和补码相同。*2.负数的原码、反码和补码转换规则:*原码:操作数的二进制位。*反码:原码除符号位外各位进行取反,符号位为0是正数,符号位为1是负数。*补码:反码加1。**三、按位运算符*1.(~)按位取反对操作数二进制位进行各位取反。*2.(&)按位与对两个操作数的二进制位进行与操作。*3.(|)按位或对两个操作数的二进制位进行或操作。*4.(^)按位异或对两个操作数的二进制位进行异或操作。**按位取反如果二进制位为1,则结果为0,否则为1。*按位与如果两个位都为1,则结果为1,否则为0。*按位或如果两个位都是0,则结果为0,否则为1。*按位异或如果两个位不相同,则结果为1,否则为0。**/
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。