C#入门到精通系列课程——第3章变量及运算符 (11)

C#中的移位运算符有两个,分别是左移位<<和右移位>>,这两个运算符都是双目运算符,它们主要用来对整数类型数据进行移位操作。移位运算符的右操作数不可以是负数,并且要小于左操作数的位数。下面分别对左移位<<和右移位>>进行讲解。

1.左移位运算符<<

左移位运算符<<是将-一个二进制操作数向左移动指定的位数,左边(高位端)溢出的位被丢弃, 右边(低位端)的空位用0补充。左移位运算相当于乘以2的n次幂。

例如,int类型数据48对应的二进制数为00110000,将其左移1位,根据左移位运算符的运算规则可以得出(00110000<<1)=01100000所以转换为十进制数就是96 (48*2); 将其左移2位,根据左移位运算符的运算规则可以得出(01100000<<2)=11000000所以转换为十进制数就是192 (48*22), 其执行过程如图3.30所示。

C#入门到精通系列课程——第3章变量及运算符

 

 

2.右移位运算符>>

右移位运算符>>是将一个二进制操作数向右移动指定的位数,右边( 低位端)溢出的位被丢弃,而在填充左边(高位端)的空位时,如果最高位是0 (表示正数),左侧空位填入0;如果最高位是1(表示负数),左侧空位填入1。右移位运算相当于除以2的n次幂。

正数48右移1位的运算过程如图3.31所示。

C#入门到精通系列课程——第3章变量及运算符

 

 负数-80右移2位的运算过程如图3.32所示。

C#入门到精通系列课程——第3章变量及运算符

 

 多学两招:由于移位运算的速度很快,在程序中遇到表达式乘以或除以2的n次幂的情况时,一般采用移位运算来代替。

3.5.8条件运算符

条件运算符用“?:” 表示,它是C#中唯一的三目运算符,该运算符需要3个操作数,形式如下:

C#入门到精通系列课程——第3章变量及运算符

 

 其中,表达式1是一个布尔值,可以为真或假,如果表达式1为真,返回表达式2的运算结果,如果表达式1为假,则返回表达式3的运算结果。例如:

C#入门到精通系列课程——第3章变量及运算符

 

 多学两招:条件运算符相当于一个if语句,因此,上面的第 2行代码可以修改如下:

C#入门到精通系列课程——第3章变量及运算符

 

 

关于if语句的详细讲解,请参见后面章节

另外,条件运算符的结合性是从右向左的,即:从右向左运算,例如: 

C#入门到精通系列课程——第3章变量及运算符

 

 等价于:

C#入门到精通系列课程——第3章变量及运算符

 

 

实例08:判断人的年龄所处阶段

创建一个控制台应用程序,使用条件运算符判断输入年龄所处的阶段,并输出相应的提示信息,代码如下;

C#入门到精通系列课程——第3章变量及运算符

 

 

代码注解:

(1)第4行代码中,Int32.Parse方法用来将用户的输入转换为int类型,存储到int类型变量中。

(2)第6行代码是定义了一个string类型的变量,记录条件表达式的返回结果

程序运行结果如图3.33所示。

C#入门到精通系列课程——第3章变量及运算符

 

 

拓展训练:

一、通过使用条件运算符判断输入的年份是不是闰年。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wsxyxx.html