[发明专利]基于链表的支持任意位数输入的运算方法及运算器无效
申请号: | 200910194274.8 | 申请日: | 2009-12-01 |
公开(公告)号: | CN101727307A | 公开(公告)日: | 2010-06-09 |
发明(设计)人: | 林忠侣;张志东 | 申请(专利权)人: | 厦门敏讯信息技术股份有限公司 |
主分类号: | G06F7/50 | 分类号: | G06F7/50;G06F7/52 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 361009 福建省*** | 国省代码: | 福建;35 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 支持 任意 位数 输入 运算 方法 运算器 | ||
所属技术领域
本发明涉及一种基于链表的支持任意位数输入的运算方法及运算器。
背景技术
在windows、linux系统下,处理加减乘除运算的运算器一般都采用double类型作为基本数据,进行数值间的相互运算,非常方便使用。double类型存储为八字节的双精度浮点数字,它表示双精度64位IEEE 754值,能够以约15位的准确度表示大至10308(正或负)的数字和小至10-323的数字,double类型还可以表示NaN(非数字)、正负无穷和正负零,但是由于double本身的存储空间容量的约束,对于需要非常精确数字或超过double容量的空间范围或输入超过double空间范围的数,运算将会出现溢出错误,因此会无法得到运算结果问题。
针对以上问题,有人提出了新的设计方案,如国家知识产权局专利库公开了的申请号为200510120279.8,“任意精度运算器、任意精度运算方法和电子设备”,该任意精度运算器包括主处理部,从低位起,每次N位的对第一任意精度值和第二任意精度值的每个值进行分割,并作为N位长度的第一输入值和第二输入值依次输出。该方案通过电路实现无论数据的精度如何,均可采用同一计算算法进行运算,突破固定长整数加减法的运算,效率较高,但是该方法存在以下不足:1、需要相应硬件电路来实现,实现比较复杂,不利于节约成本;2、运用该方法实现功能有限,只能进行加减运算,无法实现乘法和除法的运算;3、操作对象仅限于可变长整数的位数运算,不支持小数位运算;4、移植性不高;因此现有技术在某些场合依然不够适用。
发明内容
本发明针对背景技术运算器实现功能的不足,提出一种基于链表的可实现支持任意位数输入运算、实现加减乘除多种功能、实现任意位整数及小数位输入运算的方案。
本发明解决其技术问题所采用的技术方案是:
基于链表的支持任意位数输入的运算方法,其特征在于:所述运算方法主要通过如下步骤实现:
对输入任意位数的操作数结构体进行分割处理,输出整数部分、小数部分及正负标志;
将整数部分的各数值逆序存储于整数链表中,小数部分的各数值逆序存储于小数链表中;
将整数链表、小数链表及正负标志进行相互运算,得到显示正负标志、逆序显示整数链表中的各数、小数点、逆序显示小数链表中的各数,最后按原序规则处理输出最后运算结果。
一较佳实施例中,所述基于链表的支持任意位数输入的运算方法包括加法运算。
进一步的,所述加法运算方法通过以下步骤实现:
步骤107A,按原序规则处理输出加法运算的结果;
步骤101A,对输入的任意位数操作数的结构体进行分割为整数部份、小数部份及正负标志,将整数部分的各位数值逆序存储为整数链表,小数部分的各位数值逆序存储为小数链表;
步骤102A,判断正负标志;
如果两操作数都为负,得到结果数的正负标志为负数,执行步骤103A;
如果两操作数都为正,得到结果数的正负标志为正数,继续执行步骤103A;
如果两操作数为一正一负,则执行减法运算;
步骤103A,对两操作数的小数链表进行快速加法运算,得到结果数的小数链表与进位数;
步骤104A,对两操作数的整数链表进行快速加法运算,得到新的整数链表;
步骤105A,以进位数生成一个相应的整数链表与新的整数链表进行快速加法运算,得到结果数的整数链表;
步骤106A,去除结果数的小数链表从第一结点开始的数字为0的连续结点,及结果数的整数链表从末尾结点开始数字为0的连续结点;
一较佳实施例中,所述基于链表的支持任意位数输入的运算方法包括减法运算。
进一步的,所述减法运算方法通过以下步骤实现:
步骤101B,对输入的任意位数操作数的结构体进行分割为整数部份、小数部份及正负标志,将整数部分的各位数值逆序存储为整数链表,小数部分的各位数值逆序存储为小数链表;
步骤102B,判断正负标志;
如果两操作数为一正一负,则改变第二操作数的正负标志为正,返回两操作数的加法运算;
如果两操作数为一负一正,则改变第一操作数的正负标志为正,结果数的正负标志为负数,返回两操作数的加法运算;如果两操作数都为正,则执行步骤103B;
步骤103B,比较第一操作数与第二操作数的大小;
如果第一操作数小于第二操作数,则改变第一操作数的正负标志为正,结果数的正负标志为负,返回两操作数的加法运算;
如果第一操作数大于或等于第二操作数,则执行步骤104B;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于厦门敏讯信息技术股份有限公司,未经厦门敏讯信息技术股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200910194274.8/2.html,转载请声明来源钻瓜专利网。