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();
        }
    }
}

运算结果:

posted @ 2017-08-26 12:21  让优秀成为一种习惯  阅读(283)  评论(0编辑  收藏  举报