用加减乘除实现位运算

编程入门 行业动态 更新时间:2024-10-21 19:08:43
加减乘除实现位运算 就是怎么能用四则运算,仅限加减乘除,实现从数据中(比方说32bit)筛选出指定的两位数据,并表示成0、1、2或3(2bit所能表达的数据)。比方说数据源(用D0表示)D0=1,说明第一个信息是1,D0=5,说明至少有两个信息,第一个为1,第二个也为1,D0=14,,说明至少有两个信息,第一个为3,第二个为2。求高手解答,谢谢! 问题补充,没有强制类型转换,比方说(int)(float)等都没有的,程序默认是四舍五入。还有,不是用C等编程语言,就是直接的用四则运算。

最满意答案

首先 要知道是要取多少位,比如是1 3两位 这里要做一个约定,就是从低位开始标记,从0下标开始 D0 D1 ... D20...D31(假设总位数32位) 这个约定很重要,不然没法说明白了 然后,程序默认是四舍五入,这个比较麻烦,因为计算的时候要做到的是无条件舍去 所以在做除法的时候先减去被除数一半 设原始数为A 计算过程 提取Di 中间变量x x= (A-2^(i-1))/(2^i) 这一步操作相当于A>>i 判断x是奇数还是偶数,如果是奇数 那么Di=1,否则Di=0 如果不支持%的话,再由于四舍五入的特性 可以判断 x/2*2==x 如果是奇数 那么x/2*2会是x+1,是偶数则相等 这样就提取出来Di了 合成两位数就简单了 假设提取Di Dj i>j 那么最终的数R=Di*2+Dj 例子: 设原始数字为110 提取D1 D3 D1=(110-2^(0))/(2^1)=(110-1)/2=54.5=55 奇数 D1=1 D3=(110-2^(2))/(2^3)=(110-4)/8=13.25=13 奇数 D3=1 结果R=1*2+1=3

更多推荐

本文发布于:2023-08-05 05:32:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1428583.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:加减乘除

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!