如何计算Oracle PL / SQL中整数的位长?
我希望将INT
转换为BIT STRING
,然后LENGTH( LTRIM(BIT STRING, '0') )'
答案 0 :(得分:3)
您可以使用以下公式来获取整数n
(n> 0)的二进制表示的字符数:
ceil(log(2, n + 1))
SQL> SELECT n, ceil(log(2, n + 1)) num_of_char
2 FROM (SELECT ROWNUM n FROM dual CONNECT BY LEVEL <= 64);
N NUM_OF_CHAR
---------- -----------
1 1
2 2
3 2
4 3
5 3
6 3
7 3
8 4
[...]
15 4
16 5
[...]
31 5
32 6
[...]
63 6
64 7