C# 《四》表达式和运算符(2)
1、位运算符
1、位(bit):在计算中存储所有数据都采用二进制,那么二进制的位,便是我们所说的 bit。
1)1Byte = 8bit 1字节 = 8位
2)1k =1024Byet
3)1M = 1024K
4)1G = 1024M
5)1T = 1024G
大多数代码中都不使用这些运算符,但应知道这样的运算符存在。它们主要用于高度优化的代码,在这些代码中,使用其他数学操作的开销太高了,因此它们通常用于驱动程序或系统代码。
使用 & 按位运算符
1)同时为 1 结果为 1,否则结果为 0
使用 | 按位运算符
只要有一个 1 ,那么结果为 1 ;否则结果为 0
使用 ^ 按位运算符
异或:有且仅有一个 1 ,结果为 1 ;否则结果为 0 。
使用 ~ 按位运算符
取反:1 变 0 ,0 变 1.
程序如下:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace _4._6_位运算符 { class Program { static void Main(string[] args) { /* & 与*/ int num1 = 1; int num2 = 1; Console.WriteLine(num1&num2); /* <<左移 >>右移*/ int num3 = 4; int num4 = 1; Console.WriteLine(num3<<num4); Console.WriteLine(num3>>num4); Console.ReadKey(); } } }
运行结果:
2、其他运算符
1、字符串连接运算符 +
将两个字符串连在一起组成一个新的字符串
str1 = "my name is " str2 = "snowskywalker "
2、is 运算符
用于动态检查对象的运行时类型是否与给定类型兼容。
bool = a is string
3、三元运算符
表达式 1? 表达式 2: 表达式 3
" I have {0} book{1} !" ,qty,qty == 1?"" : "s"
a > 10 " 大于 " :" 小于 ";
程序如下:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace _4._7_其他运算符 { class Program { static void Main(string[] args) { string str1 = "我的名字叫:"; string str2 = "雪上行者"; Console.WriteLine(str1+str2); Console.WriteLine("我是用于输出到屏幕"+"这个是利用加号进行连接的"); int a = 10; double b = 3.14; string c = "我要自学网"; bool mybool = false; mybool = a is int; Console.WriteLine("a is int \t"+mybool); mybool = b is double; Console.WriteLine("b is double \t" + mybool); mybool = c is string; Console.WriteLine("c is string \t" + mybool); //输出语句 ”I have 数量 pen“ Console.WriteLine("\n\n请输入您拥有的钢笔数量"); int qty = Convert.ToInt32(Console.ReadLine()); Console.WriteLine("I have {0} pen {1}",qty,qty>1?"s":""); Console.WriteLine("\n\n请您输入需要比较的数"); int num = Convert.ToInt32(Console.ReadLine()); string str =num>=5?"大于等于5":"小于"; Console.WriteLine("您输入的数字{0} 5",str); Console.ReadKey(); // \t跳到下一个制表位 } } }
运算结果:
3、运算符的优先级
优先级数越小,优先级别也越高;
1、当操作相同优先级的两个运算符时;运算符的执行顺序遵循如下原则:
1)除了赋值运算符外,所有的二元运算符执行顺序都是 “ 从左向右 ”;
2)赋值运算符和条件运算符(三元运算符)都是按照 “ 从左向右 ” 的顺序执行
2、当执行多个运算符时,在运算符的优先级不确定时,为了提高程序的可读性和清晰度,可使用括号进行顺序控制。
程序如下:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace _4._8运算符的优先级 { class Program { static void Main(string[] args) { int var1 = 10; bool mybool = false; mybool = var1 <= 4 && var1 >= 2; Console.WriteLine(mybool); Console.ReadKey(); } } }
运行结果:
4、本章小结及任务实施
例题:
1、编程实现 1532855 秒是几天几小时几分钟几秒?
2、修改上面的题目,让用户输入。
小时(Hour),分钟(Minute),秒(Seconds)。
程序如下:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace _4._9本章小结 { class Program { static void Main(string[] args) { //1232855秒是几天几小时几分钟几秒 Console.WriteLine("请输入您想要计算的秒数:"); int time = Convert.ToInt32(Console.ReadLine()); int day = time / (24 * 3600); //天 int hour = time % (24 * 3600) / 3600; //小时 int min = time % 3600 / 60; //分 int sec = time % 60; Console.WriteLine("{0}秒是{1}天{2}小时{3}分钟{4}秒",time,day,hour,min,sec); Console.ReadKey(); } } }
运算结果: