C#中几个不常用的操作符
由于刚进公司没多久和同事们共同开发一个项目,回到家里也没没怎么学习,也不知道要写点什么?安装了VISTA,在有些功能上还不懂的用,今天无聊中想起了一些操作符,但是真的忘记了它是怎么算的了。看了一下感觉感觉,本文大部分内容和例子来自于MSDN,只是为了你后好找把它弄过啦,由于我还没有装MSDN上线上的很慢郁闷。
加减乘除不用讲了,中国人都会;&&,!=,<,>,等也差不多经常用到,今天来看看主要的几个二进制计算的操作符:
~ 运算符对操作数执行按位求补运算,其效果相当于反转每一位。按位求补运算符是为 int、uint、long 和 ulong 类型预定义的。不用多说例子很重要啊,看了就明白了:
& 运算符既可作为一元运算符也可作为二元运算符。
二元 | 运算符是为整型和 bool 类型预定义的。对于整型,| 计算操作数的按位“或”结果。对于 bool 操作数,| 计算操作数的逻辑“或”结果;也就是说,当且仅当两个操作数均为 false 时,结果才为 false。
输出结果:
今天先看看这三个操作符,当然他们有~=,&=,|=操作符,大家也知道他们的意思。从上面的三个例子可以看出~按位求补基本上也就是不足16(16进制)的用F减去自身来替代自身的数字就OK了。int类型的数字在内存中为32位,也就是说每一个数字不过32位的前面加0然后求补。对于&比较多的功能,首先它可以是不安全代码指针,内存地址的引用,不知道是不是这样说的,其次可以是二进制的按位与位数上全是1时才为1,其他为0;如果是逻辑与全为true时才为true,其他为false。而对|操作符来说,只要有一个1就为1,只要有一个为true就为true,除非全是0或false时才是0和false。OK有了这些我们就知道怎样来计算了(在权限中应用是不错的)。
加减乘除不用讲了,中国人都会;&&,!=,<,>,等也差不多经常用到,今天来看看主要的几个二进制计算的操作符:
~ 运算符对操作数执行按位求补运算,其效果相当于反转每一位。按位求补运算符是为 int、uint、long 和 ulong 类型预定义的。不用多说例子很重要啊,看了就明白了:
1 // cs_operator_bitwise_compl.cs
2 using System;
3 class MainClass
4 {
5 static void Main()
6 {
7 int[] values = { 0, 0x111, 0xfffff, 0x8888, 0x22000022};
8 foreach (int v in values)
9 {
10 Console.WriteLine("~0x{0:x8} = 0x{1:x8}", v, ~v);
11 }
12 }
13 }
输出的结果:2 using System;
3 class MainClass
4 {
5 static void Main()
6 {
7 int[] values = { 0, 0x111, 0xfffff, 0x8888, 0x22000022};
8 foreach (int v in values)
9 {
10 Console.WriteLine("~0x{0:x8} = 0x{1:x8}", v, ~v);
11 }
12 }
13 }
~0x00000000 = 0xffffffff
~0x00000111 = 0xfffffeee
~0x000fffff = 0xfff00000
~0x00008888 = 0xffff7777
~0x22000022 = 0xddffffdd
~0x00000111 = 0xfffffeee
~0x000fffff = 0xfff00000
~0x00008888 = 0xffff7777
~0x22000022 = 0xddffffdd
& 运算符既可作为一元运算符也可作为二元运算符。
一元 & 运算符返回操作数的地址(要求 unsafe 上下文)。为整型和 bool 类型预定义了二进制 & 运算符。对于整型,& 计算操作数的逻辑按位“与”。对于 bool 操作数,& 计算操作数的逻辑“与”;也就是说,当且仅当两个操作数均为 true 时,结果才为 true。& 运算符计算两个运算符,与第一个操作数的值无关。
1 // cs_operator_ampersand.cs
2 using System;
3 class MainClass
4 {
5 static void Main()
6 {
7 Console.WriteLine(true & false); // logical and
8 Console.WriteLine(true & true); // logical and
9 Console.WriteLine("0x{0:x}", 0xf8 & 0x3f); // bitwise and
10 }
11 }
2 using System;
3 class MainClass
4 {
5 static void Main()
6 {
7 Console.WriteLine(true & false); // logical and
8 Console.WriteLine(true & true); // logical and
9 Console.WriteLine("0x{0:x}", 0xf8 & 0x3f); // bitwise and
10 }
11 }
输出结果:
False
True
0x38
True
0x38
二元 | 运算符是为整型和 bool 类型预定义的。对于整型,| 计算操作数的按位“或”结果。对于 bool 操作数,| 计算操作数的逻辑“或”结果;也就是说,当且仅当两个操作数均为 false 时,结果才为 false。
1 // cs_operator_OR.cs
2 using System;
3 class MainClass
4 {
5 static void Main()
6 {
7 Console.WriteLine(true | false); // logical or
8 Console.WriteLine(false | false); // logical or
9 Console.WriteLine("0x{0:x}", 0xf8 | 0x3f); // bitwise or
10 }
11 }
2 using System;
3 class MainClass
4 {
5 static void Main()
6 {
7 Console.WriteLine(true | false); // logical or
8 Console.WriteLine(false | false); // logical or
9 Console.WriteLine("0x{0:x}", 0xf8 | 0x3f); // bitwise or
10 }
11 }
输出结果:
1 True
2 False
3 0xff
2 False
3 0xff
今天先看看这三个操作符,当然他们有~=,&=,|=操作符,大家也知道他们的意思。从上面的三个例子可以看出~按位求补基本上也就是不足16(16进制)的用F减去自身来替代自身的数字就OK了。int类型的数字在内存中为32位,也就是说每一个数字不过32位的前面加0然后求补。对于&比较多的功能,首先它可以是不安全代码指针,内存地址的引用,不知道是不是这样说的,其次可以是二进制的按位与位数上全是1时才为1,其他为0;如果是逻辑与全为true时才为true,其他为false。而对|操作符来说,只要有一个1就为1,只要有一个为true就为true,除非全是0或false时才是0和false。OK有了这些我们就知道怎样来计算了(在权限中应用是不错的)。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架