부호있는 정수란 무엇입니까?


최상의 답변

이것은 소프트웨어 엔지니어링이라는 주제로 질문되었으므로 표현에 대해 논의 할 수 있습니다.

8 데이터 비트 (비트는 1 또는 0을 나타내는 스위치 임)는 다음과 같이 부호없는 정수를 보유 할 수 있습니다.

0 = 00000000

1 = 00000001

2 = 00000010

4 = 00000100

8 = 00001000

16 = 00010000

256 = 10000000

511 = 11111111

따라서 우리의 8 비트 데이터는 255와 같은 큰 부호없는 정수를 보유 할 수 있습니다. 그러나 실제 응용 프로그램은 양수뿐만 아니라 음수도 요구할 수 있습니다.

부호있는 정수를 수용하려면 저장 용량의 일부를 포기해야합니다. 이를 수행하는 몇 가지 방식이 있습니다.

가장 간단한 방식은 첫 번째 비트를 사용하여 부호를 나타내는 것입니다 (예 : 0은 양수이고 1은 음수). 이는 양수 및 음수 0 값을 갖는 흥미로운 결과를 가져옵니다.

+ 0 = 00000000

- 0 = 10000000

1 = 00000001

- 1 = 10000001

+ 2 = 00000010

- 2 = 10000010

+ 64 = 01000000

- 64 = 11000000

+127 = 01111111

이렇게하면 -127에서 +127은 255 개의 숫자 (0 포함)입니다.

다른 방법은 ones-complement 저장. 이를 위해 음수는 양수와 반대 비트 시퀀스입니다.

예 :

0 = 00000000

0 = 11111111

2 = 00000010

- 2 = 11111101

음수를 사용한 산술을 사용하면 두 숫자를 더할 수 있습니다. 예를 들어 2 + -2는

+ 2 = 00000010

-2 = 11111101

--------------

= 11111111

이전에 본 것은 0이었습니다. 따라서 8 비트로이 표현에 저장할 수있는 범위는 -127에서 +127 사이의 정수 또는 255 개의 숫자입니다 (0을 단일 숫자로 포함하므로).

0의 음수는 0이므로 , 여전히 0의 두 가지 표현이 있습니다. 약간 낭비이므로이 문제를 해결하기 위해 twos-complement 가 사용됩니다. 그것은 1을 보완하는 음수를 취하고 1을 더합니다. 이 표현에서

0 = 00000000

2 = 00000010

- 2 = 11111110

- 1 = 11111111

1 = 00000001

-128 = 10000000

127 = 01111111

-127 = 10000001

이 표현에서 8 비트로 저장할 수있는 범위는 -128에서 +127 사이의 정수 또는 총 256 개의 숫자입니다. 이 체계를 사용하면 모든 조합을보다 효과적으로 사용할 수 있습니다. 이는 부호있는 정수와 같은 기본적인 것을 나타내는 리소스를 최대한 활용하려는 경우 매우 중요 할 수 있습니다.

다른 형식의 부호있는 부호도 있습니다. 부호있는 숫자 표현-Wikipedia 에서 볼 수있는 정수 표현입니다.

Answer

먼저, 둘 중 하나를 사용하는 솔루션이 없습니다. 0과 같은 숫자.

둘 다 0이면 두 변이 정의되지 않습니다. (원하는 경우 솔루션이라고 부를 수 있습니다. 그렇지 않습니다.)

하나가 0이고 다른 하나가 양수이면 한쪽은 0이고 다른 쪽은 1입니다.

한 쪽이 0이고 다른 쪽이 음수이면 한쪽은 한쪽이고 다른 쪽은 정의되지 않습니다.

이제 양의 정수만 고려하면 a = b가 작동하는 것이 분명합니다.

다른 솔루션의 경우 양변의 자연 로그를 취하면 (양변이 양수이므로 문제 없음)

b ln (a) == a ln (b)

양변을 a와 ln (a)로 나눕니다 (문제 없습니다. 현재 양의 정수만 고려하고 있습니다).

(b / a) == ln (b) / ln ( a) == ln (a * (b / a)) / ln (a) == [ln (a) + ln (b / a)] / ln (a) == 1 + ln (b / a) / ln (a)

다시 정렬

(b / a) -1 == ln (b / a) / ln (a)

양변 곱하기 ln (a)로 양변을 (b / a) -1로 나누면

ln (a) == ln (b / a) [(b / a) -1]

이것은 a = b 인 경우 0으로 나누는 것이지만 우리는 이미 그 경우를 고려했습니다. 따라서 이것은 a> 0, b> 0 및 a b에만 유효합니다. 이제 b / aa 이름을 지정하고 x = b / a라고합니다.

그래서 우리는

ln (a) == ln (x) / (x-1)

a == 1이 아닌 경우 왼쪽은 항상 양수입니다.이 경우 x == 1이 필요합니다 (오른쪽은 x = 1을 포함하는 연속성에 의해 정의 될 수 있으며 이 시점에서 1과 같음). 그러나 x == 1이면 a = b이므로이 방정식의 도출은 유효하지 않으며 어쨌든 이미 a = b를 고려했습니다.

따라서 왼쪽은 a> 1에 대해 양수입니다. 하지만 괜찮습니다. 오른쪽은 항상 양의 x에 대해 양수이기 때문입니다.그러나 ln (a) <1 및 ln (a)> 1의 경우를 별도로 생각할 수 있습니다. (ln (a) = 1은 a의 정수 값에 대해 발생하지 않습니다.)

ln (a) 의 경우

ln (x) / (x-1 ) .

x> 1이면 분자와 분모가 양수이므로 항상 그렇습니다.

ln (x) -1입니다. 그러나 x 이면 분자와 분모가 음수이므로

ln (x)> x-1

이것은 로그 함수의 경우가 아닙니다. 따라서 ln (a) <1이면 x> 1이 필요합니다. (이미 a = b를 다루었으므로 x = 1을 고려할 필요가 없습니다.)

ln (a)> 1이면 어떨까요? 그렇다면

ln (x) / (x-1)> 1

x> 1이면 분자와 분모가 양수이므로

ln ( x)> x-1

그렇지 않습니다. x 이면 분자와 분모가 음수이므로

ln (x) -1

항상 그렇습니다. 따라서 ln (a)> 1이면 x 이 필요합니다.

따라서 a b가있는 양의 정수의 경우 두 가지 경우를 고려해야합니다. 하나는

ln (a) <1 및 x> 1

이고 다른 하나는

ln (a)> 1 및 x

그러니 생각해 봅시다. ln (a) <1, 즉 a = 2 인 a> 1 (이미 a = 1로 간주)은 하나뿐입니다. 그런 다음 해당 x는 다음과 같습니다.

ln (2) == ln (x) / (x-1)

교육 된 추측 (그리고 다른 답변 중 하나에는 이미 다음이 있습니다. 솔루션)은 x = 2입니다. 그러나 x = b / a, a = 2이므로 x = 2이면 a = 4입니다. ln (x) / (x-1)은 x> 0에 대해 엄격하게 감소하는 함수이기 때문에 x의 다른 값에 대한 해는 없습니다.

다른 경우는 ln (a)입니다. > 1이지만이 경우 x 입니다. 이는 b / a 또는 b 1 (모든 정수 a> 2에 대해 true)이면 a가 더 큰 정수이고 b가 더 작습니다. 그러나 ln (b)> 1이 될 수 있습니까? 그렇다면 a와 b를 전환하면 대칭으로 인한 솔루션이어야합니다. 그런 다음 ln (a)> 1은 x <1을 의미합니다. 즉, a는 여전히 더 큰 정수이고 b는 더 작습니다. 그래서 a는 더 크고 b는 더 작습니다. 우리는 그 값을 바꾸고 a는 여전히 더 크고 b는 여전히 더 작습니까? 불가능합니다. 따라서 ln (a)> 1 및 ln (b)> 1에는 해가 없습니다. ln (b) = 1은 정수에 해당하지 않으므로 ln (a)> 1이면 ln (b) 이어야합니다. 그리고 ln (b) <1을 갖는 유일한 정수 b> 1은 2입니다.

양의 정수 솔루션이 있으면 두 값 a와 b가 동일하거나 둘 중 하나가 2입니다. 그리고 다른 하나는 4입니다.

a = b = 0을 솔루션이라고 부르지 않는 한, undefined가 undefined와 같다는 이유로 a = 0 또는 b = 0을 포함하는 솔루션은 없지만 수학 면허를 빼앗기고 싶지 않습니다.

부정적인 해결책을 가질 수 있을까요? a <0 및 b> 0 (b = 0을 가질 수 없음)을 가정하면 a ^ b는 정수이지만 b ^ a는 a = -1이면 정수일뿐입니다. 그러나 b가 홀수이면 a ^ b는 -1이고 b가 짝수이면 +1입니다. b ^ a는 양수이므로 a = -1과 홀수 b를 가질 수 없습니다. 그러나 b가 짝수이면 a ^ b는 1이고 b ^ a는 1과 같지 않습니다. 그래서 우리는 a <0과 b> 0을 가질 수 없습니다. 같은 이유로 a> 0과 b 을 가질 수 없습니다.

a 과 b 을 가질 수 있습니까? 이 경우 a ^ b는 b가 짝수이면 양수이고 b가 홀수이면 음수입니다. 마찬가지로 b ^ a는 a가 짝수이면 양수이고 a가 홀수이면 음수입니다. 따라서 둘이 같으려면 a와 b가 모두 홀수이거나 a와 b가 모두 짝수 여야합니다.

홀수라고 가정합니다. 다음으로 시작합니다.

a ^ b == b ^ a

양변에 음수 1을 곱하고 약간 재정렬하여

(-a) ^ b == (-b) ^ a

양변의 역수를 취하면

(-a) ^ (-b) == (-b) ^ (- a)

하지만 만약 a 과 b <0이면 -a> 0과 -b> 0이고, 우리는 이미 -a와 -b에 대한 유일한 양의 해가 둘 다 홀수라고 결정했습니다. -a = -b 또는 a = b 일 때. 따라서 a와 b가 각각 동일한 음의 홀수 정수이면 동일성이 유지됩니다. 둘 중 하나가 음의 홀수이고 a b이면 해가 아닙니다.

a와 b가 음의 짝수이면 어떨까요? 그런 다음 양쪽에 -1을 곱하지 않고

(-a) ^ b == (-b) ^ a

를 얻습니다. 양쪽의 역수를 취하면

(-a) ^ (-b) == (-b) ^ (-a)

우리는 이미 -a > 0 및 -b> 0 및 둘 다 양의 정수입니다. -a = -b, -a = 2 및 -b = 4 또는 -a = 4 및 -b = 2입니다.

모든 경우에 적용됩니다. 따라서 정수 솔루션의 전체 목록은 다음과 같습니다.

a와 b는 동일한 양 또는 음의 정수입니다 (0이 아님)

a = 2 및 b = 4

a = 4 및 b = 2

a = -2 및 b = -4

a = -4 및 b = -2

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다