development

수학 연산자 *, /, +,-, ^를 사용하여 0이 아닌 숫자를 1로 변환 할 수 있습니까?

big-blog 2020. 7. 21. 07:32
반응형

수학 연산자 *, /, +,-, ^를 사용하여 0이 아닌 숫자를 1로 변환 할 수 있습니까?


난 단지 추가, 뺄셈, 곱셈 연산자 자바 스크립트 표현식을 지원하는 분할 소프트웨어 (오라클 시벨)와 함께 작업하고 있어요 XOR ( *, /, -, +, ^). 나는 다른 연산자 등이없는 !또는 ? :사용할 수 있습니다.

위의 연산자를 사용하면 숫자가 0이 아닌 경우 1로 변환하고 이미 0이면 0으로 남겨 둘 수 있습니까? 숫자는 양수, 0 또는 음수 일 수 있습니다.

예:

var c = 55;

var d;  // d needs to set as 1

시도 c / c했지만 0 일 NaN평가됩니다 . 0 일 때 c0 d이어야합니다 c.

c는 통화 값이며 최대 두 개의 후행 숫자와 12 개의 선행 숫자를 갖습니다.

if숫자를 부울 0 또는 1로 변환 한 다음 표현식의 다른 부분을 곱하여 조건 을 에뮬레이션하려고합니다 .


c / (c + 5e-324)작동해야합니다. (상수 5e-324Number.MIN_VALUE가장 작은 대표 양수입니다.) x가 0 인 경우, 정확히 0이며 x가 0이 아닌 경우 (기술적으로 x가 최소 4.45014771701440252e-308 인 경우 0이 아닌 가장 작은 숫자는 질문, 0.01, is), JavaScript의 부동 소수점 수학은 답이 1과 다르기 때문에 너무 부정확하므로 정확히 1로 나옵니다.


표현식을 사용하십시오 n/n^0.

경우 n0이 아닌 :

 Step    Explanation
------- -------------------------------------------------------------------------------
 n/n^0   Original expression.
 1^0     Any number divided by itself equals 1. Therefore n/n becomes 1.
 1       1 xor 0 equals 1.

n0 인 경우 :

 Step    Explanation
------- -------------------------------------------------------------------------------
 n/n^0   Original expression.
 0/0^0   Since n is 0, n/n is 0/0.
 NaN^0   Zero divided by zero is mathematically undefined. Therefore 0/0 becomes NaN.
 0^0     In JavaScript, before any bitwise operation occurs, both operands are normalized.
         This means NaN becomes 0.
 0       0 xor 0 equals 0.

보시다시피, 0이 아닌 모든 값은 1로 변환되고 0은 0으로 유지됩니다. 이는 JavaScript에서 0이라는 사실을 활용합니다 NaN^0.

데모:

[0, 1, 19575, -1].forEach(n => console.log(`${n} becomes ${n/n^0}.`))


(((c/c)^c) - c) * (((c/c)^c) - c) 음수 및 양수의 경우 항상 1을, 0의 경우 0을 반환합니다.

선택한 답변보다 더 혼란스럽고 더 길다. 그러나 나는 덜 해 키고 상수에 의존하지 않는 것처럼 느낍니다.

편집 : @JosephSible이 언급했듯이 상수를 사용하지 않는 더 컴팩트 한 버전의 내 버전과 @CRice 버전은 다음과 같습니다.

c/c^c-c

매우 복잡한 답변이지만 제한된 정밀도에 의존하지 않는 답변 :을 가져 가면 x가 0이면 x^(2**n)항상 x+2**n같지만 x-2**nx가 n 번째 자리에 하나 있으면 x와 같습니다 . 따라서 x = 0의 경우 (x^(2**n)-x+2**n)/(2**(n+1)항상 1이지만 x! = 0의 경우 0이됩니다. 따라서 (x^(2**n)-x+2**n)/(2**(n+1)모든 n 이상의 곱을 취하면 1로 XOR하면 원하는 기능을 얻을 수 있습니다. 그러나 각 요소를 수동으로 코딩해야합니다. 부동 소수점을 사용하는 경우이를 수정해야합니다.

==운영자 가 있으면 (x==0)^1작동합니다.

참고 URL : https://stackoverflow.com/questions/52979555/can-mathematical-operators-be-used-to-convert-a-non-zero-number-to

반응형