[发明专利]一种二进制数的双向移位方法及装置有效
申请号: | 201310680553.1 | 申请日: | 2013-12-12 |
公开(公告)号: | CN103677731A | 公开(公告)日: | 2014-03-26 |
发明(设计)人: | 杜东振;陈印锋;朱宇霞 | 申请(专利权)人: | 北京北方烽火科技有限公司 |
主分类号: | G06F5/01 | 分类号: | G06F5/01 |
代理公司: | 北京信远达知识产权代理事务所(普通合伙) 11304 | 代理人: | 赵百令;刘大玲 |
地址: | 100085 北京市海淀*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 二进制 双向 移位 方法 装置 | ||
1.一种二进制数的双向移位方法,其特征在于,包括:
若m位第一有符号二进制数对应的第一有符号十进制数为负数且n位有符号二进制数左移k位后不会发生溢出,k为所述第一有符号十进制数的绝对值,则将m位第一有符号二进制数拆分成至少两个m位第二有符号二进制数,所述第一有符号二进制数等于所述至少两个第二有符号二进制数的和值;
将所述至少两个第二有符号二进制数分别转换为第二有符号十进制数,所述第二有符号十进制数的绝对值对应于移位位数,所述第二有符号十进制数的符号对应于移位方向,所述符号为正时所述移位方向为右,所述符号为负时所述移位方向为左;
从至少两个第二有符号十进制数中提取一个第二有符号十进制数,并按照提取的第二有符号十进制数对应的移位位数和移位方向对n位有符号二进制数进行移位处理;
从未被提取过的第二有符号十进制数中提取一个第二有符号十进制数,并按照提取的第二有符号十进制数对应的移位位数和移位方向对上一次移位处理后的n位有符号二进制数进行本次移位处理,继续执行所述从未被提取过的第二有符号十进制数中提取一个有符号十进制数的步骤,直到全部提取完毕为止;
其中,当所述本次移位处理的移位位数为p时,若本次移位方向为左且上次移位方向为右,则从上次向右移出的各个二进制位中的最高位开始取出p位且在不足P位时补0,并将取出的p位填补到本次移位结束后的n位有符号二进制数的最低p位处;若本次移位方向为右且上次移位方向为左,则从上一次向左移出的各个二进制位中的最低位开始取出P位且在不足P位时补符号位,并将取出的p位填补到本次移位结束后的n位有符号二进制数中符号位后的最高P位处;
其中,m、n、k和p均为正整数,m <= log2(n) + 1。
2.根据权利要求1所述的方法,其特征在于,
若m位第一有符号二进制数对应的第一有符号十进制数为负数且n位有符号二进制数左移k位后会发生溢出,则当所述n位有符号二进制数的符号位为1时,将左移k位后的n位有符号二进制数置为最小负数,或,当所述n位有符号二进制数的符号位为0时,将左移k位后的n位有符号二进制数置为最大正数。
3.根据权利要求1所述的方法,其特征在于,所述将m位第一有符号二进制数拆分成至少两个m位第二有符号二进制数,具体包括:
将所述m位第一有符号二进制数的各个二进制位拆分成至少两个数据区间,所述数据区间中包括一个二进制位或多个二进制位;
保持所述数据区间内各个二进制位在所述m位第一有符号二进制数中的位置不变,并将除所述数据区间内各个二进制位以外的与所述m位第一有符号二进制数对应的其它二进制位补零,以得到m位第二有符号二进制数。
4.根据权利要求1所述的方法,其特征在于,所述将m位第一有符号二进制数拆分成至少两个m位第二有符号二进制数,具体包括:
分次从所述m位第一有符号二进制数中提取一个或多个二进制位,直到将所述m位第一有符号二进制数中的所有二进制位提取完为止;
对于每次提取的二进制位,保持提取的二进制位在所述m位第一有符号二进制数中的位置不变,并将除提取的二进制位以外的与所述m位第一有符号二进制数对应的其它二进制位补零,以得到m位第二有符号二进制数。
5.根据权利要求1至4任一项所述的方法,其特征在于,
若所述至少两个第二有符号十进制数中存在一个符号为负的第二有符号十进制数,则最后提取所述符号为负的第二有符号十进制数。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京北方烽火科技有限公司,未经北京北方烽火科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201310680553.1/1.html,转载请声明来源钻瓜专利网。