用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的原创技术文章,请关注公众号"汪子熙":

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

  1. 检查用户是否有权限从ABAP里调用C kernel functions

    1.检查用户是否有权限从ABAP里调用C kernel functions 权限对象 S_C_FUNCT. 相关参数说明: PROGRAM: Name of the ABAP/4program tha ...

  2. SAP ABAP里存在Java List这种集合工具类么?CL_OBJECT_COLLECTION了解一下

    Jerry以前在工作中交替做着ABAP和Java开发时,总是在使用一种语言时,怀念另一种语言的便利之处,比如用ABAP开发时,怀念Java里以List为代表的功能强大,使用方便的集合工具类. List ...

  3. 如何在ABAP里用函数式编程思想打印出非波拉契Fibonacci(数列)

    在JavaScript里可以用ES6提供的FunctionGenerator这种黑科技来打印非波拉契数列,具体细节参考我这篇文章. 在ABAP里也有很多种方式实现这个需求. 下面这个report分别用 ...

  4. SAP ABAP里数据库表的Storage Parameters从哪里来的

    如何查看ABAP数据库表的storage parameter? 事务码SE11,utilities->Database Object->Database Utility: 点这个Stora ...

  5. 已知一个特殊字符的 unicode 编码值,如何在 ABAP 里打印出这个特殊字符?

    以这个特殊的心形符号为例: https://www.fileformat.info/info/unicode/char/2764/index.htm 我们在上面的网页里查询到其 unicode 编码为 ...

  6. 通过实际的例子,介绍 SAP ABAP 里的 Repository Information System 的使用技巧

    本文通过一些实际的例子,介绍 ABAP Repository Information System 的使用技巧. 顾名思义,ABAP Repository Information System,是一个 ...

  7. SAP Hybris Commerce里类似ABAP里的透明表设计

    标题的"透明表"得上引号,原因是因为Hybris里的table modelling和Netweaver里的transparent table还不是绝对的一致, 虽然从作用上说都是从 ...

  8. 在ABAP里模拟实现Java Spring的依赖注入

    Dependency Injection- 依赖注入,在Java Spring框架中有着广泛地应用.通过依赖注入,我们不必在应用代码里繁琐地初始化依赖的资源,非常方便. 那么ABAP能否从语言层面上也 ...

  9. 在ABAP里实现条件断点的三种方式

    背景 有不同的同事问我这个问题:例如下图的LOOP要执行1000次,我只对其中的某一次比如第501次循环感兴趣,我肯定不可能按500次F5然后进入第501次的调试.或者我只对LOOP里某个变量为某一个 ...

最新文章

  1. [TYVJ] P1016 装箱问题
  2. docker redis 配置文件_基于Docker搭建Redis一主两从三哨兵
  3. java web一: xml
  4. 正则表达式限制文本框只能输入数字
  5. (转) Linux(Centos7)yum安装最新mysql
  6. datatables 一列显示两个字段的数据_5个超实用的Excel数据透视表技巧,学会少加班...
  7. HTML:H5新特性
  8. 数字信号处理的fpga实现_数字信号处理的卷积运算实现
  9. 安卓没有第三方rec获取root教程,成功率90%
  10. ssh远程连接阿里云服务器
  11. 关于 HTTP 长连接
  12. 面试官:如何实现扫码登录功能?
  13. Web前端学习路线笔记(六)html5
  14. ISCSI 客户端远程挂载块设备卡住
  15. c c++ 实现代理服务器
  16. 腾讯云云通信TLS后台API在mac上JAVA DEMO搭建
  17. wamp php打不开,wamp无法打开phpmyadmin
  18. SNN论文系列-ANN to SNN 学习算法
  19. ChromeFK插件推荐系列十九:网站图片批量下载插件推荐
  20. 在线答题小程序关于完形填空题的设计

热门文章

  1. 长短期记忆(LSTM)相关知识
  2. 文献记录(part60)--高维模型选择方法综述
  3. sklearn自学指南(part42)--使用手册的目录
  4. 期货与期权(part10)--远期与期货合约的比较
  5. CSS基础(part6)--CSS的颜色表示
  6. JAVA面试题(part1)--变量相加与常量相加
  7. R语言与非参数检验之两独立样本中位数检验
  8. 初识Mysql(part6)--我需要知道的4条Mysql语句之利用通配符过滤
  9. 为什么 学汽修 java_这七个优势 告诉你为什么要学汽修
  10. 客制化键盘键位修改_干电池 支持5设备无线连接 - 高斯ALT71机械键盘拆解评测...