ABAP面试题系列:只用位操作实现两个整数的加法运算
发布日期:2021-06-30 14:06:41 浏览次数:2 分类:技术文章

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

REPORT zint.PARAMETERS: a TYPE int4 OBLIGATORY DEFAULT 100,            b TYPE int4 OBLIGATORY DEFAULT 100.FORM add USING a TYPE int4 b TYPE int4 CHANGING cv_result TYPE int4.  DATA: n TYPE int4 VALUE 0,        c TYPE int4 VALUE 0.  DATA: i TYPE int4 VALUE 1.  DATA: boolean_a TYPE abap_bool,        boolean_b TYPE abap_bool,        _a        TYPE int4,        _b        TYPE int4,        aa TYPE int4,        bb TYPE int4.  DATA(wrapper_one) = zcl_integer=>value_of( 1 ).  DATA(wrapper_c) = zcl_integer=>value_of( c ).  aa = a.  bb = b.  WHILE i < 1073741824.    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( ) EQ 1 ).    boolean_b = boolc( wrapper_b->and( wrapper_one )->get_raw_value( ) EQ 1 ).    _a = COND int4( WHEN boolean_a EQ abap_true THEN 1 ELSE 0 ).    _b = COND int4( WHEN boolean_b EQ abap_true THEN 1 ELSE 0 ).    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( COND int4( WHEN _n_wrapper->get_raw_value( ) > 0 THEN i ELSE 0 ) ).    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.    DATA(wrapper_i) = zcl_integer=>value_of( i ).    wrapper_i->shift_left( ).    i = wrapper_i->get_raw_value( ).  ENDWHILE.ENDFORM.START-OF-SELECTION.  DATA: i TYPE int4.  PERFORM add USING a b CHANGING i.  WRITE: / i.

要获取更多Jerry的原创文章,请关注公众号"汪子熙":

转载地址:https://jerry.blog.csdn.net/article/details/104034321 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Jerry 2010年CFCA POC源代码
下一篇:使用ABAP代码动态创建Netweaver数据库表

发表评论

最新留言

不错!
[***.144.177.141]2024年04月08日 23时29分27秒