国产99久久精品_欧美日本韩国一区二区_激情小说综合网_欧美一级二级视频_午夜av电影_日本久久精品视频

最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當前位置: 首頁 - 科技 - 知識百科 - 正文

Oracle10進制轉換2進制

來源:懂視網 責編:小采 時間:2020-11-09 12:46:52
文檔

Oracle10進制轉換2進制

Oracle10進制轉換2進制:寫了個Oracle轉換函數,發現當數據為負數的時候,無法轉換,因為業務前端入庫的數據是32位,當JAVA進行有符號轉換為INT類型的時候 寫了個Oracle轉換函數,發現當數據為負數的時候,無法轉換,因為業務前端入庫的數據是32位,當JAVA進行有符號轉換為I
推薦度:
導讀Oracle10進制轉換2進制:寫了個Oracle轉換函數,發現當數據為負數的時候,無法轉換,因為業務前端入庫的數據是32位,當JAVA進行有符號轉換為INT類型的時候 寫了個Oracle轉換函數,發現當數據為負數的時候,無法轉換,因為業務前端入庫的數據是32位,當JAVA進行有符號轉換為I

寫了個Oracle轉換函數,發現當數據為負數的時候,無法轉換,因為業務前端入庫的數據是32位,當JAVA進行有符號轉換為INT類型的時候

寫了個Oracle轉換函數,發現當數據為負數的時候,無法轉換,,因為業務前端入庫的數據是32位,當JAVA進行有符號轉換為INT類型的時候,會產生負數,而我要再次轉換為二進制進行位的判斷,網上找了好多,都不能做有符號數字的轉換,因此按照負數的二進制表示法重新寫了個函數:

負數的二進制方法的表示方法:例如 -5
第一步:首先要把5變成101的二進制形式
第二步:再者就是安位取反,(形成前面全是1)010
第三步:在最后加1 形成:11111111 11111111 11111111 11111011

CREATE OR REPLACE FUNCTION NUMBER_2_BIT(V_NUM NUMBER) RETURN VARCHAR IS
V_RTN VARCHAR(2000);
V_N1 NUMBER;
V_N2 NUMBER;
BEGIN
V_N1 := ABS(V_NUM);
--如果為正數
IF SIGN(V_NUM) > 0 THEN
LOOP
V_N2 := MOD(V_N1, 2);
V_N1 := ABS(TRUNC(V_N1 / 2));
V_RTN := TO_CHAR(V_N2) || V_RTN;
EXIT WHEN V_N1 = 0;
END LOOP;

--dbms_output.put_line('正數結果'||V_RTN);

--補全32位高位0
SELECT lpad(V_RTN,32,0)
INTO V_RTN
FROM dual;

--dbms_output.put_line('正數補全結果'||V_RTN);

ELSE
--轉換為二進制同時按位取反
LOOP
V_N2 := MOD(V_N1, 2);
IF V_N2 = 1 THEN
V_N2 := 0;
ELSIF V_N2 = 0 THEN
V_N2 := 1;
END IF;
V_N1 := ABS(TRUNC(V_N1 / 2));
V_RTN := TO_CHAR(V_N2) || V_RTN;
EXIT WHEN V_N1 = 0;
END LOOP;

--dbms_output.put_line('負數結果'||V_RTN);

--補全32位高位1
SELECT lpad(V_RTN,32,1)
INTO V_RTN
FROM dual;

--dbms_output.put_line('負數補全1結果'||V_RTN);

--二進制轉換為10機制,同時+1
SELECT SUM(data1) + 1
INTO V_N1
FROM (SELECT substr(V_RTN, rownum, 1) * power(2, length(V_RTN) - rownum) data1
FROM dual
CONNECT BY rownum <= length(V_RTN));

-- dbms_output.put_line('轉換為十進制數結果'||V_RTN);

----轉換為二進制
LOOP
V_N2 := MOD(V_N1, 2);
V_N1 := ABS(TRUNC(V_N1 / 2));
V_RTN := TO_CHAR(V_N2) || V_RTN;
EXIT WHEN V_N1 = 0;
END LOOP;

--dbms_output.put_line('負數轉換結果'||V_RTN);

--補全32位高位0
SELECT lpad(V_RTN,32,0)
INTO V_RTN
FROM dual;

--dbms_output.put_line('負數補全0結果'||V_RTN);

END IF;

RETURN V_RTN;
END;

linux

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

Oracle10進制轉換2進制

Oracle10進制轉換2進制:寫了個Oracle轉換函數,發現當數據為負數的時候,無法轉換,因為業務前端入庫的數據是32位,當JAVA進行有符號轉換為INT類型的時候 寫了個Oracle轉換函數,發現當數據為負數的時候,無法轉換,因為業務前端入庫的數據是32位,當JAVA進行有符號轉換為I
推薦度:
標簽: 轉換 10 數據庫
  • 熱門焦點

最新推薦

猜你喜歡

熱門推薦

專題
Top
主站蜘蛛池模板: 欧美日本一区二区三区 | 日韩欧美综合 | 欧美资源在线观看 | 中文字幕欧美日韩 | 亚洲国产精品一区二区久 | 亚洲国产成人久久综合碰碰动漫3d | 精品国产自在在线在线观看 | 久久国内 | 拍真实国产伦偷精品 | 殴美激情 | 亚欧美色 | 国产欧美日韩中文字幕 | 热久久国产 | 欧美日韩成人在线 | 性夜影院爽黄a爽免费看网站 | 日本特级淫片免费看 | 欧美性妇 | 制服丝袜一区 | 伊人网免费视频 | 欧美一区二区视频 | 97精品国产91久久久久久久 | 一区二区三区精品牛牛 | 亚洲 欧美 自拍 另类 欧美 | 一区二区视频在线观看 | 福利二区| 成人亚洲国产精品久久 | 久久精品免费看 | 曰韩免费视频 | 国产成人一区二区三区影院免费 | 在线播放精品一区二区啪视频 | 国产精品免费大片一区二区 | 国产日产精品_国产精品毛片 | 日韩欧美网| 国产精品一区久久 | 黄色成人在线 | 亚洲97 | 免费永久在线观看黄网 | 国产精品一区二区不卡 | 国产成人精品一区 | 国产91久久久久久久免费 | 在线观看日韩视频 |