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 پاسخ 843 بازدید
+1 امتیاز
1 پاسخ 433 بازدید
+1 امتیاز
1 پاسخ 1.0هزار بازدید
+1 امتیاز
1 پاسخ 1.0هزار بازدید
+1 امتیاز
1 پاسخ 527 بازدید
+1 امتیاز
1 پاسخ 772 بازدید
سوال شده 11 سال قبل در برنامه نویسی توسط kashi (7.2هزار امتیاز)
...