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 پاسخ 713 بازدید
+1 امتیاز
1 پاسخ 304 بازدید
+1 امتیاز
1 پاسخ 868 بازدید
+1 امتیاز
1 پاسخ 326 بازدید
+1 امتیاز
1 پاسخ 679 بازدید
سوال شده 10 سال قبل در برنامه نویسی توسط kashi (7.2هزار امتیاز)
...