`
JerryWang_SAP
  • 浏览: 1030662 次
  • 性别: Icon_minigender_1
  • 来自: 成都
文章分类
社区版块
存档分类
最新评论

面试问题 - 只用位操作在ABAP里实现a+b

阅读更多

 

用ABAP实现下图的第五种整数相加算法:

 

 

实现代码:

REPORT zint.

PARAMETERS: a TYPE int4 OBLIGATORY DEFAULT 100,
            b TYPE int4 OBLIGATORY DEFAULT 100.

DATA: threshold TYPE int4.

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 < threshold.
    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.
  threshold = ipow( base = 2 exp = 30 ).
  PERFORM add USING a b CHANGING i.

  WRITE: / i.

算法描述参考我的SCN博客 Just for fun – Implement a + b using pure bitwise operation in ABAP

要获取更多Jerry的原创技术文章,请关注公众号"汪子熙"或者扫描下面二维码:

 
 
0
1
分享到:
评论

相关推荐

    云南鸿翔SAP培训------ABAP

    云南鸿翔SAP培训------ABAP,abap的ppt,很好的资料哦

    -----ABAP FAQs--------------------------------------------

    -----ABAP FAQs--------------------------------------------

    SAPabap培训+学习+练习

    SAP,ABAP培训+学习+练习,网络下载资料与大家分享

    SAP-ABAP+IDOC+Interface.pdf

    SAP-ABAP+IDOC+Interface 主要涉及的是SAP系统中的ABAP编程语言以及IDOC(Intermediate Document)在企业间接口的应用场景。文档标题“SAP-ABAP+IDOC+Interface.pdf”表明了其主要内容是围绕这些技术展开的。 #### ...

    abap-ALV.rar_ABAP系统ALV_abap_abap开发alv

    标题“abap-ALV.rar_ABAP系统ALV_abap_abap开发alv”暗示我们将深入探讨ABAP ALV的使用,特别是在ABAP系统中的应用以及如何进行开发。 描述中提到“ABAP ALV总结,ALV格式,REUSE_ALV_GRID_DISPLAY_LVC函数使用”,...

    实战SAP程序开发--从实例学SAP ABAP编程

    通过"实战SAP程序开发--从实例学SAP ABAP编程"这本书,你可以期望学到如何将这些概念应用到实际项目中,理解SAP ABAP的开发流程,并掌握解决实际问题的技能。书中的实例会帮助你巩固理论知识,提高编程能力,从而在...

    1500+页的ABAP图文教程+SAP标准教程

    此外,SAP标准教程部分会进一步阐述ABAP在实际SAP系统中的应用,帮助你更好地将理论知识转化为实际操作技能。无论你是初学者还是经验丰富的开发者,这套教程都能提供宝贵的学习资料,助你在ABAP和SAP领域不断提升。

    ABAP常见面试问题

    ### ABAP常见面试问题解析 #### 1. ABAP程序的典型结构是什么? ABAP (Advanced Business Application Programming) 是一种广泛应用于 SAP (Systems, Applications, and Products in Data Processing) 系统中的...

    1500+页的abap图文教程+sap标准教程

    1500+页的abap图文教程+sap标准教程 

    abap官方教材+练习

    - **变量声明**:在ABAP中,你需要先声明变量,再进行操作,如`DATA: lv_name TYPE string.`。 - **语句结构**:ABAP使用BEGIN OF和END OF定义结构,IF...ENDIF和SELECT...ENDSELECT等控制结构进行条件判断和数据...

    SAP变式配置-相关性程序如何调用ABAP函数[参照].pdf

    然而,对于一些负责的算法,相关性程序无法直接实现,需要通过调用ABAP函数来实现。那么,如何调用ABAP函数成了相关性程序的一大难题。 在SAP系统中,相关性程序可以调用标准函数,但是这些函数的数量有限,无法...

    ABAP751 ABAP - Keyword Documentation

    ABAP - Keyword Documentation This documentation describes the syntax and meaning of the keywords of the ABAP language and its object-oriented part ABAP Objects. Alongside this, language frameworks ...

    《abap经典面试题》

    "ABAP经典面试题" ABAP是一种高级编程语言,用于开发SAP R/3系统中的应用程序。本文总结了ABAP经典面试题,涵盖了ABAP基础知识、数据对象、语句、报表程序设计等多方面的知识点。 1.ABAP基础知识 在ABAP中,数据...

    ABAP+函数总结+常用函数解释[借鉴].pdf

    在ABAP编程中,函数模块扮演着至关重要的角色,它们是SAP系统中的可重用代码块,用于执行特定任务。...在实际项目中,开发者需要根据具体需求灵活运用并结合其他ABAP语言特性,以实现高效、稳定的业务逻辑。

    ABAP面试题大全含答案.pdf

    ABAP面试题最全合集(含答案)

    面试题-ABAP开发

    ABAP开发面试题知识点总结 ABAP开发是一种强大的编程语言,用于开发SAP R/3系统中的应用程序。以下是ABAP开发面试题中涵盖的知识点总结: 1. 授权对象:授权对象是由多个字段组成的,它们的值将用于进行授权检查。...

    非常好的abap面试题

    在给定的问题中,语句 C)sflight-price = a+b; 将编译报错,因为 sflight 是一个结构,price 是其一个字段,而 a 和 b 是未定义的变量。 2. 关于 TCODE 在 ABAP/4 的开发工作中,SE80 是直接进入创建程序、函数组...

    Notepad++ ABAP代码高亮显示 ABAP.XML

    Notepad++ ABAP代码高亮显示

    ABAP 面试问题及答案

    ABAP 面试问题及答案 ABAP 是一種高级编程语言,主要應用在 SAP 系统中。以下是 ABAP 面试问题及答案,涵盖了锁对象、Function Module、ABAP 内存、授权对象、修改、修改助手、功能模块出口、事务变式等知识点。 ...

Global site tag (gtag.js) - Google Analytics