《使用移位运算来避免乘法运——C#第八周》

/* (程序头部注释开始)
* 程序的版权和版本声明部分
* Copyright (c) 2011, 烟台大学计算机学院学生
* All rights reserved.
* 文件名称:    《使用移位运算来避免乘法运——C#第八周》                         
* 作    者:       刘江波                      
* 完成日期:    2012     年    10   月    23    日
* 版 本 号:     v1.1    

* 对任务及求解方法的描述部分
* 问题描述:

移位运算的特点是速度快,使用移位运算来避免乘法运算是一种常用技巧。不过乘数必须都是正整数,而且必须至少有一个是 2 的 n 次方。例如:

        num *= 32;
        等同于
        num <<= 5; /* 2 的 5 次方等于 32 */

 如果乘数不是 2 的 n 次方,则可以把乘数分解成几个 2 的 n 次方的和:
        num *= 20;
        等同于
        num *= (16 + 4);

 请设计一个用移位和加法运算取代整数相乘的方法。 
* 程序头部的注释结束
*/

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace yiweiyunsuan
{
    class Program
    {
        static void Main(string[] args)
        {
            /* num *= 32;等同于
            num <<= 5; /* 2 的 5 次方等于 32 

	    如果乘数不是 2 的 n 次方,则可以把乘数分解成几个 2 的 n 次方的和:
            num *= 20;等同于num *= (16 + 4);*/
            int num1 = 2,num2,num;
            num2 = 8;
            num = num1 * num2;
            Console.WriteLine("num = {0}",num);
            num = num1 <<= 3;
            Console.WriteLine("num = {0}", num);

            num1 = 2;
            num2 = 12;
            num = num1 * num2;
            Console.WriteLine("num = {0}", num);
            int num3,num4;
            num3 = num1 <<= 3;
            num1 = 2;
            num4 = num1 <<= 2;
            num = num3 + num4;
            Console.WriteLine("num = {0}", num);
            Console.ReadKey();        
        }
    }
}


你可能感兴趣的:(c,String,C#,Class,任务)