面试问题 - 只用位操作在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的原创技术文章,请关注公众号"汪子熙":
面试问题 - 只用位操作在ABAP里实现a+b相关推荐
- 检查用户是否有权限从ABAP里调用C kernel functions
1.检查用户是否有权限从ABAP里调用C kernel functions 权限对象 S_C_FUNCT. 相关参数说明: PROGRAM: Name of the ABAP/4program tha ...
- SAP ABAP里存在Java List这种集合工具类么?CL_OBJECT_COLLECTION了解一下
Jerry以前在工作中交替做着ABAP和Java开发时,总是在使用一种语言时,怀念另一种语言的便利之处,比如用ABAP开发时,怀念Java里以List为代表的功能强大,使用方便的集合工具类. List ...
- 如何在ABAP里用函数式编程思想打印出非波拉契Fibonacci(数列)
在JavaScript里可以用ES6提供的FunctionGenerator这种黑科技来打印非波拉契数列,具体细节参考我这篇文章. 在ABAP里也有很多种方式实现这个需求. 下面这个report分别用 ...
- SAP ABAP里数据库表的Storage Parameters从哪里来的
如何查看ABAP数据库表的storage parameter? 事务码SE11,utilities->Database Object->Database Utility: 点这个Stora ...
- 已知一个特殊字符的 unicode 编码值,如何在 ABAP 里打印出这个特殊字符?
以这个特殊的心形符号为例: https://www.fileformat.info/info/unicode/char/2764/index.htm 我们在上面的网页里查询到其 unicode 编码为 ...
- 通过实际的例子,介绍 SAP ABAP 里的 Repository Information System 的使用技巧
本文通过一些实际的例子,介绍 ABAP Repository Information System 的使用技巧. 顾名思义,ABAP Repository Information System,是一个 ...
- SAP Hybris Commerce里类似ABAP里的透明表设计
标题的"透明表"得上引号,原因是因为Hybris里的table modelling和Netweaver里的transparent table还不是绝对的一致, 虽然从作用上说都是从 ...
- 在ABAP里模拟实现Java Spring的依赖注入
Dependency Injection- 依赖注入,在Java Spring框架中有着广泛地应用.通过依赖注入,我们不必在应用代码里繁琐地初始化依赖的资源,非常方便. 那么ABAP能否从语言层面上也 ...
- 在ABAP里实现条件断点的三种方式
背景 有不同的同事问我这个问题:例如下图的LOOP要执行1000次,我只对其中的某一次比如第501次循环感兴趣,我肯定不可能按500次F5然后进入第501次的调试.或者我只对LOOP里某个变量为某一个 ...
最新文章
- [TYVJ] P1016 装箱问题
- docker redis 配置文件_基于Docker搭建Redis一主两从三哨兵
- java web一: xml
- 正则表达式限制文本框只能输入数字
- (转) Linux(Centos7)yum安装最新mysql
- datatables 一列显示两个字段的数据_5个超实用的Excel数据透视表技巧,学会少加班...
- HTML:H5新特性
- 数字信号处理的fpga实现_数字信号处理的卷积运算实现
- 安卓没有第三方rec获取root教程,成功率90%
- ssh远程连接阿里云服务器
- 关于 HTTP 长连接
- 面试官:如何实现扫码登录功能?
- Web前端学习路线笔记(六)html5
- ISCSI 客户端远程挂载块设备卡住
- c c++ 实现代理服务器
- 腾讯云云通信TLS后台API在mac上JAVA DEMO搭建
- wamp php打不开,wamp无法打开phpmyadmin
- SNN论文系列-ANN to SNN 学习算法
- ChromeFK插件推荐系列十九:网站图片批量下载插件推荐
- 在线答题小程序关于完形填空题的设计
热门文章
- 长短期记忆(LSTM)相关知识
- 文献记录(part60)--高维模型选择方法综述
- sklearn自学指南(part42)--使用手册的目录
- 期货与期权(part10)--远期与期货合约的比较
- CSS基础(part6)--CSS的颜色表示
- JAVA面试题(part1)--变量相加与常量相加
- R语言与非参数检验之两独立样本中位数检验
- 初识Mysql(part6)--我需要知道的4条Mysql语句之利用通配符过滤
- 为什么 学汽修 java_这七个优势 告诉你为什么要学汽修
- 客制化键盘键位修改_干电池 支持5设备无线连接 - 高斯ALT71机械键盘拆解评测...