비트 단위 연산을 사용하여 주어진 숫자에 정적 단일 숫자를 추가하려고합니다.
는비트 단위 연산을 사용하여 정수 값에 임의의 숫자 추가
If the number is
2 => 12
31 => 131
24 => 124
11 => 111
그것을 할 수 있는가, 정적 숫자가 1하자 ..?
여기 비트 단위로 엄격한 이유는 정수 값으로 유지하려고합니다. 당신의 DBMS는 기본적인 수학 함수 (예를 들어 오라클)를 지원하는 경우
비트 단위 연산을 사용하여 주어진 숫자에 정적 단일 숫자를 추가하려고합니다.
는비트 단위 연산을 사용하여 정수 값에 임의의 숫자 추가
If the number is
2 => 12
31 => 131
24 => 124
11 => 111
그것을 할 수 있는가, 정적 숫자가 1하자 ..?
여기 비트 단위로 엄격한 이유는 정수 값으로 유지하려고합니다. 당신의 DBMS는 기본적인 수학 함수 (예를 들어 오라클)를 지원하는 경우
, 당신은 사용할 수 있습니다
SELECT NUMBER + Power(10, Floor(Log(10, NUMBER)) + 1)
FROM TABLE;
이 같은 문자열 트릭 멀리 얻을 수없는 경우
SELECT TO_NUMBER('1' || TO_CHAR(NUMBER))
FROM TABLE;
(사용하여 Oracle)
비트 연산자는 십진수 숫자에서 잘 작동하지 않습니다. 2의 제곱과 10의 제곱 수가 잘 맞지 않기 때문입니다. e 아니요 아이디어 데이터베이스 태그가 여기에 무엇입니까, 이것은 완전히 관련이없는 것 같습니다). 당신이 나타내는 것 같은 함수가 임의의 수의 왼쪽에 하나를 추가하려면
, 당신은 다음과 같은 알고리즘을 사용할 수 있습니다 : 예를 들어
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;
}
(오버플로를주의해야한다는 일반적인주의 사항과 함께).
죄송합니다. 제한 사항에 대해 더 자세히 설명해 주시겠습니까? 정수 산술로 이것을 계산할 수 있습니다. –
예, 정수 산술도 사용할 수 있습니다 .... – Pavunkumar
@pavun_cool 어떤 DBMS를 사용하고 있습니까? –