使用按位运算追加整数值中的任何数字

时间:2012-03-02 12:38:01

标签: database bit-manipulation

我想使用按位运算附加给定数字中的任何静态单个数字 设静态数为1,

If the number is
 2  =>  12 
 31 =>  131 
 24 =>  124
 11 =>  111 

是否可以这样做??
这里为什么我严格按位方式,我想保持为整数值。

2 个答案:

答案 0 :(得分:1)

如果dbms支持基本数学函数(例如Oracle),则可以使用:

SELECT NUMBER + Power(10, Floor(Log(10, NUMBER)) + 1)
FROM TABLE;

如果不是,你就可以逃脱一个字符串技巧:

SELECT TO_NUMBER('1' || TO_CHAR(NUMBER))
FROM TABLE;

(使用Oracle)

答案 1 :(得分:0)

按位运算符在十进制数字上效果不佳,因为2的幂和10的幂不能很好地对齐(我有没有想法数据库标记是什么在这里,这似乎是完全不相关的。)

如果你想要一个函数在你想象的任意数字的左边添加1,你可以使用以下算法:

def prefixWithOne (n):
    if n == 0:
        return 10
    addNum = 1
    testNum = n
    while testNum > 0:
        testNum = int (testNum / 10)
        addNum = addNum * 10
    return addNum + n

例如,以下C代码将执行此操作:

unsigned int prefixWithOne (unsigned int n) {
    unsigned int testNum = n;
    unsigned int addNum = 1;
    if (n == 0) return 10;
    while (testNum > 0) {
        testNum /= 10;
        addNum *= 10;
    }
    return addNum + n;
}

(关于注意溢出的常见警告)。