博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
通过Java代码来模拟乘法器
阅读量:5750 次
发布时间:2019-06-18

本文共 799 字,大约阅读时间需要 2 分钟。

hot3.png

cpu中乘法器的执行流程

Java模拟乘法器代码

/**     * 32 bit multiplier mock     * @param a     * @param b     * @return a * b     */    public static long multiply(int a, int b) {        int n = 32;        // Product        long product = 0;        int count = 0;        while (true) {            count++;            // 1. 检查寄存器最低位            if ((b & 0x01) == 1) {                // 1a. 将乘数寄存器和乘积寄存器的内容相加,结果放入乘积寄存器                product += a;            }            // 2. 将“被乘数寄存器”左移一位            a <<= 1;            // 3. 将“乘数寄存器”右移一位            b >>= 1;            // 4. 是否已经到N次循环?            if (count == n) {                break;            }        }        return product;    }

注:这里没有考虑符号位,所以在参数为负数时结果可能会不正确

 

扩展思考

这个看来,cpu也是可以没有乘法器的了? 只需要cpu有加法器,然后软件层面通过加法来实现乘法

转载于:https://my.oschina.net/shipley/blog/793247

你可能感兴趣的文章
Windows 10 技术预览
查看>>
Tomcat http跳转https
查看>>
一个自动布署.net网站的bat批处理实例
查看>>
tomcat 安装
查看>>
AIX:物理卷及有关概念
查看>>
我的友情链接
查看>>
Centos6.6安装选包及基础场景说明
查看>>
《从零开始学Swift》学习笔记(Day 61)——Core Foundation框架之内存管理
查看>>
java基础面试题-1
查看>>
深克隆与序列化效率的比较
查看>>
C++入门篇01
查看>>
3.python开发语言的特点
查看>>
Nginx使用Proxy_cache实现服务器端静态文件缓存
查看>>
lamp+nginx代理+discuz+wordpress+phpmyadmin搭建一
查看>>
nagios监控使用139邮箱报警
查看>>
Windows Phone 7 中各种Task解说(启动器与选择器)
查看>>
ArcGIS网络分析之Silverlight客户端最近设施点分析(四)
查看>>
罗森伯格助力2011年中国智能建筑技术发展应用论坛哈尔滨站
查看>>
网络割接
查看>>
mysql主从复制及失败切换
查看>>