ビット単位の演算を使用して、任意の数のスタティックな1桁を追加したいとします。
はビット単位の演算を使用して整数値の任意の数字を付加する
If the number is
2 => 12
31 => 131
24 => 124
11 => 111
それを行うことが可能であり、静的な数は1であるしましょうか..?
ここで私はビット単位で厳密な意味を持っているので、整数値として維持したいと思います。
ビット単位の演算を使用して、任意の数のスタティックな1桁を追加したいとします。
はビット単位の演算を使用して整数値の任意の数字を付加する
If the number is
2 => 12
31 => 131
24 => 124
11 => 111
それを行うことが可能であり、静的な数は1であるしましょうか..?
ここで私はビット単位で厳密な意味を持っているので、整数値として維持したいと思います。
あなたのDBMSが、基本的な数学関数(インスタンスのOracleを)サポートしている場合は、使用することができます:
SELECT NUMBER + Power(10, Floor(Log(10, NUMBER)) + 1)
FROM TABLE;
を使用すると、文字列のトリックなどで逃げることができない場合:Oracleを使用して
SELECT TO_NUMBER('1' || TO_CHAR(NUMBER))
FROM TABLE;
( )
小数点以下はで、ビット演算子はうまくいきません。2のべき乗と10のべき乗がうまく網羅されないからです。 e noアイデアデータベースタグはここにありますが、これはまったく無関係なようです)。
あなたが示しているように見えるとして、任意の数の左に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;
}
(オーバーフローを監視するための通常の警告が付いています)。
申し訳ありませんが、あなたの制限をよりよく説明できますか?整数演算でこれを計算できます。 –
はい、整数演算もOK ... – Pavunkumar
@pavun_coolどのDBMSを使用していますか? –