ABAP語言實現 左移 <<、無符號右移 >>> 位移操作
*& Form lshfit_i
*&---------------------------------------------------------------------*
* 整型左移
*----------------------------------------------------------------------*
* -->I 待位移的數
* -->PLACES 移幾位
* -->I2 位移後的數
*----------------------------------------------------------------------*
FORM lshfit_i USING i TYPE i places TYPE i i2 TYPE i.
DATA: start1 TYPE i ,start2 TYPE i.
DATA: b TYPE n.
DATA: i3 TYPE i.
FIELD-SYMBOLS: <i3> TYPE x.
FIELD-SYMBOLS: <i> TYPE x.
FIELD-SYMBOLS:
DATA: _31(4) TYPE x,p TYPE i.
p = places.
IF places < 0.
_31 = '1F000000'.
ASSIGN p TO <p> CASTING.
<p> = <p> BIT-AND _31.
ENDIF.
i2 = i.
ASSIGN i2 TO <i> CASTING.
IF p = 24 OR p = 16 OR p = 8.
p = p / 8.
SHIFT <i> BY p PLACES RIGHT IN BYTE MODE.
ELSE.
ASSIGN
start1 = 32 - p.
WHILE start1 >= 1.
READ TABLE index_map INDEX start1.
GET BIT index_map-index OF <i> INTO b.
IF b = 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 i TYPE i places TYPE i i2 TYPE i.
DATA: start1 TYPE i ,start2 TYPE i.
DATA: b TYPE n.
DATA: i3 TYPE i.
FIELD-SYMBOLS: <i3> TYPE x.
FIELD-SYMBOLS: <i> TYPE x.
FIELD-SYMBOLS: <p> TYPE x.
DATA: _31(4) TYPE x,p TYPE i.
DATA multiplier TYPE i.
p = places.
IF p < 0.
_31 = '1F000000'.
ASSIGN p TO <p> CASTING.
<p> = <p> BIT-AND _31.
ENDIF.
i2 = i.
ASSIGN i2 TO <i> CASTING.
IF p = 24 OR p = 16 OR p = 8.
p = p / 8.
SHIFT <i> BY p 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; //頭插