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 پاسخ 875 بازدید
+1 امتیاز
1 پاسخ 468 بازدید
+1 امتیاز
1 پاسخ 1.1هزار بازدید
+1 امتیاز
1 پاسخ 1.0هزار بازدید
+1 امتیاز
1 پاسخ 558 بازدید
+1 امتیاز
1 پاسخ 817 بازدید
سوال شده 12 سال قبل در برنامه نویسی توسط kashi (7.2هزار امتیاز)
...