0 امتیاز
قبل در برنامه نویسی توسط (7.2هزار امتیاز)

چگونه می توان مقدار nامین بیت یک عدد را در اوراکل پیدا کرد؟

من در حال حاضر از روش زیر استفاده می کنم:

WITH a AS
     (SELECT 7 val
        FROM DUAL)
SELECT CASE BITAND (a.val, POWER (2, n-1))
          WHEN 0
             THEN 0
          ELSE 1
       END nth_bit
  FROM a

که n متغیرم است.

1 پاسخ

+1 امتیاز
قبل توسط (7.2هزار امتیاز)
ویرایش شده قبل توسط

با توجه به اینکه اوراکل تنها دستورات اولیه بیتی را دارد (and , or , xor ,not) لذا تقریبا تنها راه ممکن همان است که ذکر کرده اید.

فقط می توانید شروط ساده if , else را با دستور decode مختصر کنید. یعنی:

WITH a AS
     (SELECT 7 val
        FROM DUAL)
SELECT DECODE (BITAND (a.val, POWER (2, n - 1)), 0, 0, 1) nth_bit
  FROM a

 

سوالات مشابه

+1 امتیاز
1 پاسخ 801 بازدید
+1 امتیاز
1 پاسخ 394 بازدید
+1 امتیاز
1 پاسخ 961 بازدید
+1 امتیاز
1 پاسخ 493 بازدید
+1 امتیاز
1 پاسخ 735 بازدید
سوال شده 11 سال قبل در برنامه نویسی توسط kashi (7.2هزار امتیاز)
...