【发布时间】:2011-02-01 17:01:57
【问题描述】:
Oracle 的 PL/SQL 中如何计算整数的位长?
我想将 INT 转换为 BIT STRING 然后 LENGTH( LTRIM(BIT STRING, '0') )'
【问题讨论】:
Oracle 的 PL/SQL 中如何计算整数的位长?
我想将 INT 转换为 BIT STRING 然后 LENGTH( LTRIM(BIT STRING, '0') )'
【问题讨论】:
可以使用下面的公式得到整数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
【讨论】: