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