C#上机 第八周 任务8 移位运算来避免乘法运算
来源:互联网 发布:mysql bin是什么文件 编辑:程序博客网 时间:2024/06/01 09:14
/* * 程序头部注释开始 * 程序的版权和版本声明部分 * Copyright (c) 2011, 烟台大学计算机学院学生 * All rights reserved. * 文件名称:移位运算来避免乘法运算 * 作 者:薛广晨 * 完成日期:2012 年 10 月 15 日 * 版 本号:x1.0 * 对任务及求解方法的描述部分 * 输入描述: * 问题描述: 移位运算的特点是速度快,使用移位运算来避免乘法运算是一种常用技巧。不过乘数必须都是正整数,而且必须至少有一个是 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 xue{ class Program { static void Main(string[] args) { Console.WriteLine("请输入乘数:"); int x = int.Parse(Console.ReadLine()); Console.WriteLine("请输入被乘数:"); int y = int.Parse(Console.ReadLine()); Console.WriteLine("{0} * {1} = {2}", x, y, multiply(x, y)); Console.ReadKey(); } public static int multiply(int x, int y) { int num = 0, n = 0; int[] arr = new int[10]; for (int i = 0; y != 0; i++) { arr[i] = y % 2; y = y / 2; } for (int i = arr.Length - 1; i >= 0; --i) { if (arr[i] == 1) { n = x << i; num = num + n; } } return num; } }}
运行结果:
- C#上机 第八周 任务8 移位运算来避免乘法运算
- C#--第八周实验--任务8--使用移位运算来避免乘法运算。
- 《使用移位运算来避免乘法运——C#第八周》
- 补码移位乘法运算
- 利用移位运算 加速乘法
- C#中的移位运算
- C#移位运算符
- 2013第八周上机任务【项目1 实现复数类中的运算符重载】
- 第八周上机任务(友元函数运算符的重载)
- 第八周上机任务项目1-1用类的成员函数完成运算符重载
- 第八周上机任务项目1-3扩展运算符的功能
- 第八周上机任务项目2-Time类中的运算符重载
- 第八周上机任务项目3-分数类中运算符重载
- 2013第八周上机任务【项目2-Time类中的运算符重载】
- 2013第八周上机任务【项目3-分数类中的运算符重载】
- 第八周任务一:运算符重载
- 利用移位和加减法实现乘法运算
- 移位运算为什么比乘法除法快
- set 容器使用案例
- java多线程总结(二)(转载)
- Continuous Feedback in Agile Teams
- 黑马程序员 模仿ArrayList去实现一个自定义的集合
- 《Head First设计模式》要点(三)
- C#上机 第八周 任务8 移位运算来避免乘法运算
- 重构与对象封装
- 如何从SQLServer类型转换成Oracle对应的数据类型
- Eclipse 引用扩展点、收集扩展点
- 黑马程序员 多线程(二)
- 如何在windows下安装linux
- CSS手册布局overflow
- JavaScript带小数金额计算
- 将DataRow[]转换成DataTable