1. 程式人生 > >ABAP語言實現 左移 <<、無符號右移 >>> 位移操作

ABAP語言實現 左移 <<、無符號右移 >>> 位移操作

*&---------------------------------------------------------------------*
*&      Form  lshfit_i
*&---------------------------------------------------------------------*
*       整型左移
*----------------------------------------------------------------------*
*      -->I          待位移的數
*      -->PLACES     移幾位

*      -->I2         位移後的數
*----------------------------------------------------------------------*
FORM lshfit_i USING TYPE places TYPE i2 TYPE i.
DATAstart1 TYPE ,start2 TYPE i.
DATATYPE n.
DATAi3 TYPE i.
FIELD-SYMBOLS<i3> TYPE x.

FIELD-SYMBOLS<i> TYPE x.
FIELD-SYMBOLS
<p> TYPE x.
DATA_31(4TYPE x,TYPE i.
  p places.
IF places 0.
    _31 '1F000000'.
ASSIGN TO <p> CASTING.
    <p> <p> BIT-AND _31.
ENDIF.

  i2 i.
ASSIGN i2 TO <i> CASTING.

IF 24 OR 16 OR 8.
    p p / 8.
SHIFT <i> BY PLACES RIGHT IN BYTE MODE.
ELSE.
ASSIGN 
i3 TO <i3> CASTING.
    start1 32 p.

WHILE  start1 >= 1.
READ TABLE index_map INDEX start1.
GET BIT index_map-index OF <i> INTO b.
IF 1.
        start2 start1 + p.
READ TABLE index_map INDEX start2.
SET BIT index_map-index OF <i3> TO b.
ENDIF.
      start1 start1 1.
ENDWHILE.
    <i> <i3>.
ENDIF.
ENDFORM.                    "lshfit_i


*&---------------------------------------------------------------------*
*&      Form  rshfit_i
*&---------------------------------------------------------------------*
*       整型右移
*----------------------------------------------------------------------*
*      -->I          待位移的數
*      -->PLACES     移幾位
*      -->I2         位移後的數
*----------------------------------------------------------------------*
FORM rshfit_i USING TYPE places TYPE i2 TYPE i.
DATAstart1 TYPE ,start2 TYPE i.
DATATYPE n.
DATAi3 TYPE i.
FIELD-SYMBOLS<i3> TYPE x.
FIELD-SYMBOLS<i> TYPE x.
FIELD-SYMBOLS<p> TYPE x.
DATA_31(4TYPE x,TYPE i.
DATA multiplier TYPE i.

  p places.
IF p < 0.
    _31 '1F000000'.
ASSIGN TO <p> CASTING.
    <p> <p> BIT-AND _31.
ENDIF.

  i2 i.

ASSIGN i2 TO <i> CASTING.

IF 24 OR 16 OR 8.
    p p / 8.
SHIFT <i> BY PLACES LEFT IN BYTE MODE.
ELSE.

相關推薦

ABAP語言實現 <<符號 >>> 位移操作

*&---------------------------------------------------------------------**&      Form  lshfit_i*&-----------------------------------------------

關於Java運算子的含義:符號位與位或位非位異或

一、左移( << ) 形式:a<<b 含義:將a的數值在二進位制下向左移動b個位置 示例:5<<2 //原數值 0000 0101 //左移後 0001 0100 二、右移( >> ) 形式:a>>b 含義:將a的

java的<<,>>,>>>符號

spa print 註意 sys 32位 等於 思維 決定 試驗 >>右移   右移,道在二進制中,假設用一個32位的Int表示一個64,那麽高位就都是0,所以當我們把整個二進制數右移,如0100000 >> 2 = 0001000,可以看到右移兩位

記一次PHP實現JS的符號(>>>)

cti UNC 爬蟲 val 無符號 ret IV 使用 pri 舉例: JS: 5>>>2 PHP function uright($a, $n) { $c = 2147483647 >> ($n - 1);

PHP實現符號(js中的 >>>)

tail php art aik http 左移 com 過程 tps 移位包括有符號左移(<<)、有符號右移(>>)、無符號右移(>>>),其中 js 支持三種移位,PHP只支持前兩種移位(沒查到第三種),恰好需要PHP進行

java的移位(<<)和移位(>>)和符號(>>>)

inf 分享 alt ron str 整數 image 指定 技術分享 1.左移 ->左移運算符“<<” - 使指定值的所有位都左移規定的次數。 ->左移m<<n 代表把數字m在無溢出的前提下乘以2的n

java 符號>>> 有符號>>

有符號右移>> 有符號右移就是右移之後,左邊的補上符號位,正數補0,負數補1 無符號右移>>> 無符號右移就是右移之後,無論該數為正還是為負,右移之後左邊都是補上0 左移<< 左移不區分有符號和無符號,都是左移之後右邊補上0,

符號>>,符號>>>

計算機表示數字正負不是用+ -加減號來表示,而是用最高位數字來表示,0表示正,1表示負 1.有符號右移>>(若正數,高位補0,負數,高位補1) 正數:例如4>>2 首先寫出4的二進位制數,因為是正數所以最高位為0,也就是第一個 0000 0000 0000 0

關於(二進位制)位移運算:帶符號移位;帶符號移位;符號移位

>> 帶符號右移位 分析:num>> n (1)相當於num(num的二進位制)向右移動n位。 (2)正數移位:右邊(低位)移出部分,直接捨棄,左邊(高位)移入部分全部補0。(正數的符號為是0)        

java中右運算子>>和符號運算子>>>的區別

  左移<< :就是該數對應二進位制碼整體左移,左邊超出的部分捨棄,右邊補零。               1101——1010 右移>> :該數對應的

java中右運算子>>和符號運算子>>>的區別

左移<< :就是該數對應二進位制碼整體左移,左邊超出的部分捨棄,右邊補零。               1101——1010 右移>> :該數對應的二進位制碼整體右移,左邊的用原有標誌位補充,右邊超出的部分捨棄。              

java移位運算子:(帶符號)和>>>(符號

1、 左移運算子   左移運算子<<使指定值的所有位都左移規定的次數。   1)它的通用格式如下所示:   value << num   num 指定要移位值value 移動的位數。   左移的規則只記住一點:丟棄最高位,0補最低位  

對於Thinking In Java中byte,short符號的理解

拜讀Thinking In Java看到以下內容 若對char,byte或者short進行移位處理,那麼在移位進行之前,它們會自動轉換成一個int。只有右側的5個低位才會用到。這樣可防止我們在一個int數裡移動不切實際的位數。若對一個long值進行處理,最後得到的結果也

C語言中 有符號符號整數溢出 (轉)

alt 原因 () tar sig 重新 detail copyto 想象 [cpp] view plain copy print? #include<stdio.h> void main() { int l=-1; unsigned

C語言實現旋字符串

abcde span tdi lib 字符 include abcdefg cde 減少 1 #include<stdio.h> 2 #include<stdlib.h> 3 #include<string.h> 4 5 v

[Trie樹] 統計英文文字中單詞出現的個數 - C語言實現 - 考慮數字英文

【英文文字】 However, after reaching the shore there are plenty of challenges waiting for him."The biggest challenge now is learning to walk agai

Qt實現半透明邊框可自由移動不規則的窗體

先出示效果圖一張,如果不是讀者需要的,讀者可以看完效果圖之後就關閉本網頁啦。 功能要點 視窗無邊框 可自由拖動 背景透明度自定義 邊框可設定為異形 實現步驟                 第1步:新建一個QWidget的子類,這裡命名為BaseWidge

C語言實現鄰接矩陣建立向圖&圖的深度優先遍歷

/* '鄰接矩陣' 實現無向圖的建立、深度優先遍歷*/ #include <stdio.h> #include <stdlib.h> #define MaxVex 100 //最多頂點個數 #define INFINITY 32768

平衡二叉樹的C語言實現(建立插入查詢刪除旋轉)【資料結構】

平衡二叉樹(AVL)或者是一顆空樹,或者是具有下列性質的非空二叉搜尋樹: (1). 任一結點的左、右子樹均為AVL樹; (2). 任一結點的左、右子樹高度差的絕對值不超過1。 對於二叉樹中任一結點T,其“平衡因子”(Balance Factor, BF)定義為BF(T)

C語言實現連結串列佇列的基本操作

一、連結串列的基本操作#include <stdio.h> #include <stdlib.h> typedef struct LNode{ int data; struct LNode *next; }LNode,*LinkList; //頭插