当前位置: 首页 > 后端技术 > PHP

面试题-只用位运算在ABAP中实现a+b

时间:2023-03-29 15:29:26 PHP

用ABAP实现下图的第五种整相运算法:实现代码:REPORTzint.PARAMETERS:aTYPEint4OBLIGATORYDEFAULT100,bTYPEint4OBLIGATORYDEFAULT100.DATA:thresholdTYPEint4.FORMttypeaddinUSINGaTYPEint4正在更改cv_result类型int4。数据:n类型int4值0,c类型int4值0。数据:i类型int4值1。数据:boolean_a类型abap_bool,boolean_b类型abap_bool,_a类型int4,_b类型int4,aa类型int4,bb类型int4。DATA(wrapper_one)=zcl_integer=>value_of(1)。DATA(wrapper_c)=zcl_integer=>value_of(c)。AA=一个。bb=b。当我<阈值时。DATA(wrapper_a)=zcl_integer=>value_of(aa)。DATA(wrapper_b)=zcl_integer=>value_of(bb)。boolean_a=boolc(wrapper_a->and(wrapper_one)->get_raw_value()EQ1).boolean_b=boolc(wrapper_b->and(wrapper_one)->get_raw_value()EQ1)._a=CONDint4(WHENboolean_aEQabap_trueTHEN1ELSE0)。_b=CONDint4(WHENboolean_bEQabap_trueTHEN1ELSE0)。wrapper_a=zcl_integer=>value_of(_a)。wrapper_b=zcl_integer=>value_of(_b)。wrapper_c=zcl_integer=>value_of(c)。DATA(_n_wrapper)=wrapper_a->xor(wrapper_b)->xor(wrapper_c)。DATA(b_or_c)=wrapper_b->or(wrapper_c)。DATA(b_and_c)=wrapper_b->and(wrapper_c)。DATA(_c_wrapper)=wrapper_a->and(b_or_c)->or(b_and_c)。c=_c_wrapper->get_raw_value()。DATA(_n_i0_wrapper)=zcl_integer=>value_of(CONDint4(WHEN_n_wrapper->get_raw_value()>0THENiELSE0))。DATA(wrapper_n)=zcl_integer=>value_of(n)。n=wrapper_n->or(_n_i0_wrapper)->get_raw_value()。wrapper_a=zcl_integer=>value_of(aa)。aa=wrapper_a->shift_right()->get_raw_value()。wrapper_b=zcl_integer=>value_of(bb)。bb=wrapper_b->shift_right()->get_raw_value()。cv_result=n。达TA(wrapper_i)=zcl_integer=>value_of(i)。wrapper_i->shift_left()。i=wrapper_i->get_raw_value()。ENDWHILE.ENDFORM.START-OF-SELECTION。数据:我输入int4。阈值=ipow(基数=2exp=30)。PERFORMaddUSINGabCHANGINGi.写:/i.算术描述参考我的SCN博客只是为了好玩——在ABAP中使用纯按位运算实现a+b