내 뇌를 부정적인 번호는 모드용 녹는

39, 정수 m trying to 모드용 i& afaq 어레이에서는 포지셔닝하십시오 루프 라운드하지 있다는 것입니다. '난 할 수 있는 %

하지만 이 모든 것이 잘못된 음수로 대한 긍정적인 숫자임 라일래스 '작동합니다.

 4 % 3 == 1
 3 % 3 == 0
 2 % 3 == 2
 1 % 3 == 1
 0 % 3 == 0
-1 % 3 == -1
-2 % 3 == -2
-3 % 3 == 0
-4 % 3 == -1

그래서 데릭쉐퍼드와 구현한

int GetArrayIndex(int i, int arrayLength)

그러한

GetArrayIndex( 4, 3) == 1
GetArrayIndex( 3, 3) == 0
GetArrayIndex( 2, 3) == 2
GetArrayIndex( 1, 3) == 1
GetArrayIndex( 0, 3) == 0
GetArrayIndex(-1, 3) == 2
GetArrayIndex(-2, 3) == 1
GetArrayIndex(-3, 3) == 0
GetArrayIndex(-4, 3) == 2

그러나 몇 가지 이유로 it& i& # 39 이 전에, ve done # 39 에 녹는 오늘 내 뇌를: (

답변 11 개

내가 내 스스로 ',' 로 정의된 함수 모드용 항상 flfile.

int mod(int x, int m) {
    return (x%m + m)%m;
}

물론 이 경우, re 계수 2 # 39 에 대한 괴롭혔다 you& 페이징됩니다 작업을 정보기술 (it) 을 작성할 수 있습니다

int mod(int x, int m) {
    int r = x%m;
    return r<0 ? r+m : r;
}

변형 또는 맞서왔다.

그 이유는 작동하잖아 에로남이네 &quot x%m"; 항상 범위 내의 [- m + 1, m-1]. 만일 전혀 새로운 것이 제외어 m 을 넣을 것이라는 긍정적인 maxvalorarray 해당 값은 변경하지 않고 나머지 m.

ShreevatsaR
ShreevatsaR
그는 11년 전 댓글을 달았습니다
7

참고: 자세한 이론의 번호 완성도, 할 수 있습니다 "라고 회선인 추가하기에서는 &quot (m< 0) = m - m, 톱, 만약 &quot. 이 경우에는 문제가 없지만, t # 39 로 doesn& &quot arrayLength"; 는 항상 양수입니다 것이다.

billpg
그는 11년 전 댓글을 달았습니다
4

제로 제외시킵니다 확인란 예정이면 가치를 m, 할 수도 있습니다.

ShreevatsaR
그는 8년 전 댓글을 달았습니다
3

@billpg: # 39, s = 0, 그래서 there& 모드용 m 에 대하여 정의되지 않은 정말 아무 것도 할 수 있는 기능을 기대할 수 있는 사례. # 39 의 caller& # 39 의 책임, it&, 이럴 수 있는지 확인합니다. ( 뭔가 mod 0) 은 사람이 없어야 한다고 하고 있다.) , 는 로토프 모드용 대해 정의된 m, 그래서 그 버그 수정 코드의 제외어 제안됩니다 만약 함수가 호출될 수 있는 오류 검사 / 취급료 제외어 함께 이루어져야 는 다래나무과 질문 p 근데 m.

Daniel A.A. Pelsmaeker
그는 8년 전 댓글을 달았습니다
0

@ShreevatsaR: 가독성을 위해 centera 내가 편집됩니다. , 보낸 이후, ll 남겨두십시오 게시물을 그대로 I& # 39 주장하고 있습니다.

Rudey
그는 8년 전 댓글을 달았습니다
0

내가 놓친 믿겠군 뭔가. X = - = 2 '5' 와 '와일드링이 어딜가던지? 그런데 ',' x '는 이후 it will do' r+m 부정적인 결과를 여전히 부정적이다. 쉽게 고칠 수 있습니다 (x< 0) r+m 추가하기만 '동시에'.

ShreevatsaR
그는 8년 전 댓글을 달았습니다
5

@RuudLenders: 만약 x = - = 2, 5, m = 막아보자구 어졌다면 'r' 는 '1', 그 이후에는 'r+m x%m' 는 '1'. 그 동안 루프 필요하지 않습니다. 요점은 (글에서 as I answer) ',' 항상 '-m' 보다 엄격하게 x%m 추가해야 할 수 있도록 한 번 어딜가던지 '에 가장 쉽게 양수입니다.

dcastro
그는 7년 전 댓글을 달았습니다
0

실제로, 추가 &quot @shreevatsar, 만약 (m< 0) = m - m, &quot. # 39 는 8 ~ 12 모드용 반환되므로 충분하나니 isn&, t, 이 식을 다시 할 경우 10 -, - 2. 제 대답은 볼 수 있습니다.

Keith Irwin
그는 7년 전 댓글을 달았습니다
1

39 에 기본적으로 때는기대어 참고, 마찬가지로 there& 없는 상황이 될 수 있는 세계 전화 한 통화 () 은 1 보다 2 mod, mod.

ShreevatsaR
그는 7년 전 댓글을 달았습니다
3

@dcastro: 로렌아줌마가 내가 할 수 있는 10 ~ 12 모드용 - 8. 수학에서, 이 경우에는 해당) 가 가장 일반적인 규칙을 등이 대표적인 'r' 의 'a', 'b', 따라서 그러한 0 r &lt 것입니다 b.

dcastro
그는 7년 전 댓글을 달았습니다
0

2 에 있는 많은 다른 언어로 아이브 com/downloads/global/corporate/iar/esg_prosupport. 복귀하십시오 12 모드용 - 10 ',' 을 주자.

Brett Hale
그는 7년 전 댓글을 달았습니다
7

+1. 내가 어떤 don& # 39, & # 39 는 지수 - t care 를 음수가 아닌 이상, 모든 개별 언어에 대한 제외어 residue& # 39. 전시 및 수학 정격 명확하지 않은 제거합니다.

Sandy Chapman
그는 6년 전 댓글을 달았습니다
1

@BrettHale 동의했잖아요 # 39 의 버퍼를 it& 사용순환 하는 때도 유용합니다. '인덱스 = index_of (가치, 값), e. i. 값 = 값뿐 [(인덱스화할 - 1) % 발 주그렌크스], '너, 이 경우 t # 39 라고 can& 부정적인 인덱스화할 어레이에는 충돌 지수 연산자입니다 네거티브 반환할 수 있습니다.

AnorZaken
그는 5년 전 댓글을 달았습니다
0

그러나, 이후 &quot mod&quot 이름 난 또 브렛헤일 동의한다. 다른 의미로 사용되는 것은 감독을 셨으며 (그리고 일반적으로 프로그래밍 컨텍스트로 도대체 무엇이 아니라 it& # 39 의 선택해제합니다) 꼭 이래야겠어요 정보지지자 (int, int 모드용 @base) '을 할 수 있는 방법을 이름이' 코먼레시두에 정확성 및 명확하지 않은 이상. ([http://mathworld.wolfram.com/CommonResidue.html] (http://mathworld.wolfram.com/CommonResidue.html))

dapi
그는 5년 전 댓글을 달았습니다
3

39, s worth 아니하였으매 뭐하러요 it& 빠른 메가 이터레이션에, 고해상도 타이머 테스트 및 '이 질문에 답을 나온 두 개의 머리를 약간 복귀하십시오 %m (x%m + m),' 에, c # .net clr 일관됨 성능상의 이점을 사용하여, 둘 사이의, 내 시스템에 4.0.

ShreevatsaR
그는 4년 전 댓글을 달았습니다
0

야, 단락 @joeblow 시작하는 것은 마지막 다시 읽을 desktopplatforms &quot 작동하잖아 에로남이네 &quot x%m";; [- m + 1, m-1] 에서 항상 maxvalorarray .&quot. # 39 몇 가지 예를 통해 사용할 수 없는 경우, re 교도관님도요 아웃해야 you& 이를 수긍했다. (편집: 또한 1월 2013년 뤼트렌더스 보러 의견을 통해 해결하는 대로 정확히 같은 오해를 네거잖아)

Fattie
그는 4년 전 댓글을 달았습니다
0

39 m, s # 39 it& 아아아안녀어엉 @ShreevatsaR I& 매우 아쉽고,,, 내 실수로 첫 번째 &quot %m&quot didn& # 39 - 내가 볼 수 없다. 미안 ~ 꼰이야! 올바른 대답을 물론 있다.

poizan42
그는 4년 전 댓글을 달았습니다
1

이 문제가 있는 오버플로입니다. 예를 들어 m = x = 1073741824, 1073741825, 1073741824) 이 줘야 할 하지만 실제로 사용하면 - 1073741822.

또한, 이 t # 39, 이 때문에 그 어떤 개선을 지터 can& 향상시키십시오 변경하십시오 시맨틱스를 것이다. 그래서 아마도 경우 버전이 더 사용할 수 있습니다.

Youda008
그는 2년 전 댓글을 달았습니다
0

@KeithIrwin: 그냥 내 tmi5 분기로의 는 거의 2 배 더 빠른 두 배 이상 변형, 거친 % for me.

Keith Irwin
그는 2년 전 댓글을 달았습니다
0

테스트 중 하나가 될 수 있는 상황을 @youda008 제환자의 인수 또는 제외어 있기 때문에 단순히 분기 예측, t # 39 의 트레이닝하려면 doesn& 양수입니다 케이스 하나? 그렇다면 that& # 39 의 매우 흥미로운 및 I& # 39; d 프로세서 설계 때문에 볼 수 있는 호기심을 갖고 그들이 행한 수 없는 내게 하는 것으로 보인다.

Youda008
그는 2년 전 댓글을 달았습니다
0

@KeithIrwin: 내가 다시 테스트 결과에 대한 사전 생성된 어레이입니다 같은 난수, 겨우 약간 낮아진 것입니다.

Петър Петров
그는 일 년 전 댓글을 달았습니다
0

그러나 대부분의 언어에서 너회의 공식을 정수로 사용할 수 있습니다.

C # 과 유념하십시오 C++& # 39 의 % # 39 에 따라서, 나머지 it& 작동자 실제로 아닙니다. 따라서 이 경우, 공식은 사용할 수 있다.

float nfmod(float a,float b)
{
    return a - b * floor(a / b);
}

하지만 이는 (또는 C++) 이 C # 의 코딩 할 수 있는 길을 따라서 확보하십시오 아닌 나머지.

leetNightshade
그는 8년 전 댓글을 달았습니다
17

39 의 작동자 실제로 C++& 유념하십시오 &quot, % # 39 의 모듈러스 it& 아닌, 나머지. &quot. 감사합니다, 이제 그것은 결코 제대로 작동되었던 함께 항상 공감하는 이유를 알 제외어 숫자임.

Tyress
그는 6년 전 댓글을 달았습니다
2

39 의 작동자 실제로 C++& 유념하십시오 &quot, % # 39 의 모듈러스 it& 아닌, 나머지. &quot. # 39 이것은, 내가 don& 정확한 이유를 알 것 같지는 않다 # 39 는 임의의 a, t don& 쉐퍼드도 나머지 따라서 다르다. # 39 에 무슨 의미가 있는 나머지 작업을 that& 수도 있다고 호출이네요 위키백과 # 39 의 it& 바로 프로그래밍 언어 치료를 제외어 숫자임 다르기 때문이다. 이 모듈러스 연산자입니다 &quot, 나머지 C # 에서 분명히 들려주시겠습니까 from&quot. 영 (-9%4 4-2 는 - 8 수신기마다 차이가 있기 때문에 = - 1 - 1) - - - 12 로 는 검토하겠다고 밝혔으며 또 다른 정의를 9%4 43 때문에, +3, 나머지 +3 (같이 Google& # 39 의 검색 기능, 언어 문제가 있어 확실하지 않습니다).

Петър Петров
그는 6년 전 댓글을 달았습니다
14

탄성 계수 및 나머지 타이어를 차이가 있습니다. 예를 들면 다음과 같습니다.

'3' 는 3. 6 + 4 개의 21 모드용 4 는 때문에 - 21

그러나 '4' 와 '- 1 - 5 로 나눈 나머지 21 보기입니다'.

대한 긍정적인 값뿐만 차이가 없습니다. 이러한 차이는 교도관님도요 정보 알려 주시기 바랍니다. 벤자민에 의탁하도록 위키백과 항상:)

Aaron Franke
그는 3년 전 댓글을 달았습니다
2

따라서 대신 나머지 모든 기능을 사용할 이유는? 그들이 하는 이유는 '%' 나머지?

ToolmakerSteve
그는 2년 전 댓글을 달았습니다
2

이 @aaronfranke 레거시 cpu 가 빠르게 제작할 수 있으며, 나머지 사단 이전 하드웨어에는 한 몫 한 것으로 볼 때, 이 것이 - 하드웨어 부정적 효과는. 단순히 언어 대칭복사된 하드웨어일까요. 대부분의 시간을 작업할 그렇고여 양수입니다 배당 및 무시됨 프로그래머가 이 경구. 당시 속도를 증가시켜 왔다.

nobody
그는 일 년 전 댓글을 달았습니다
0

딱 후세: 난 뒤에 있는 것을 알게 될 때까지 내가 어려움을 겪고 있는 mkl floor (-0.5) 는 - 1 과 0 이 아니다.

Петър Петров
그는 일 년 전 댓글을 달았습니다
0

알토 이 피르무라 汲摹窍妨绰 비사양 정수 약수. e, b 스크램블된 g, 스냅됩니다 0.5 전달하는 경우 0.5.

한 줄 통해 구축을 '%' 한 번만.

int mod(int k, int n) {  return ((k %= n) < 0) ? k+n : k;  }

John Demetriou
그는 3년 전 댓글을 달았습니다
1

이 작업이 올바릅니까? as I 보이지 않을 만큼 설명을 disk_b_s10database 수락됨 누구나 쉽게 만들 수 있도록 한다. 예를 들어. 모드용 반환되므로 (-10.6) 6. 맞나요? 복귀하십시오 할 것은 4?

Evgeni Sergeev
그는 3년 전 댓글을 달았습니다
3

@JohnDemetriou 너회의 숫자임 모두 잘못된: (A) 2 (B), 2 반품해야 않니다 반품해야 합니다 실행하십시오 코드. 항목 (A): 직접 찾을 수 있습니다 (10, 6) ',' 모드용 추가하거나 subtract 6 대답은 ' [0, 6)' 에서 maxvalorarray 때까지 반복적으로 들립니다. 왼쪽에 있는 이 표기를 포함) 및 독점적인 right&quot 고말은 ";). 이 경우에는 확증하노라 얹는 6 번, 2. 이 코드는 쉽게 볼 수 있는 매우 단순하고, it& # 39 의 it& # 39 의 오른쪽: 첫째, 동등한 않니다 추가 / 삭제 'n', 'n' 에서 접근하는 경우, 위와 같이 한 점을 제외하고는 정지점으로 파선-짧은 부정적 측면. 이 경우 우리는 해결하십시오. 좁히어: 주석:)

Evgeni Sergeev
그는 3년 전 댓글을 달았습니다
1

그나저나, here& # 39 을 사용하는 이유는 '%' 한 것이 좋은 방법이 될 수 있습니다. 표 참조) 이 글에서 셨으며 what 비용 code 관리됨 [먹어서나 빠른 관리됨 코드: 어떤 걸 알고 연간등가비용] (https://msdn.microsoft.com/en-us/library/ms973852.aspx? f = 255&amp, 마스페로르 = - 2147217396). '%' 는 '' 를 사용하여 partnernet 비싸다구요 int div 에 나열된 표: 약 36 배 이상 비싼 추가하거나 제거하여 되고, 약 13 배나 비싸다. 물론 이는 별것 아니라면 어떤 코드에 핵심으로 하고 있다.

Medinoc
그는 3년 전 댓글을 달았습니다
2

그런데 이 경우, 특히 단일 '%' 보다 더 비싸야 테스트 및 이동줄을 can& # 39, 쉽게 예측할 수 없다?

일부 추가 제시된다.

1 에서 [유클리드 정의] 이 모드용 결과: 항상 양수입니다 합니다.

예:

 int n = 5;
 int x = -3;

 int mod(int n, int x)
 {
     return ((n%x)+x)%x;
 }

출력:

 -1

Jeff B
Jeff B
그는 5년 전 댓글을 달았습니다
15

39 m, i& 혼란스럽다. 항상 긍정적인 결과는 그렇게 있다, 그런데 나열하십시오 출력입니다 '-'?

Abin Mathew
그는 5년 전 댓글을 달았습니다
0

나는 유클리드 정의에 따라 @jeffbridgman 밝혔다. '두 가지 가능한 선택, 긍정적일 알리기 위해, 또한, 다른 두 가지 선택 사항은 제외어 한 몫. 일반적으로, 정수론, 나머지 '에서' 항상 긍정적인 조짐을 보이고 있지만, 프로그래밍 언어 및 사탄들 언어에 따라 선택 및 / 또는 ᄂ씨. [5] 파스칼 표준 및 Algol68 열거하십시오 대해서도 긍정적인 나머지 (또는 0), 일부 프로그래밍 언어에서, C90 남겨두십시오 제외어 제수 같은 경우에는 n 의 구현 (implementation) 또는 it up '는 부정적인 반응을 보였다.

39, s, t # 39 shreevatsar& won& 오토메이티드 경우에도 사용할 경우, 만약 모든 추가했는지 &quot (m< 0) = m - m, &quot 차지할 경우, 부정적인 결과를 초래했다고 / 제수.

예를 들어, 정보기술 (it) - 2. 10 - 8 ~ 12 모드용 될 것이라고 합니다.

다음 구축에는 작동합니까 양수값과 모두에 대해 부정적인 결과를 초래했다고 / 제수 및 따르는 다른 구현 (즉, 자바, 파이썬, 루비, 스칼라, 배열, Javascript, Google& # 39 의 계산기에는):

internal static class IntExtensions
{
    internal static int Mod(this int a, int n)
    {
        if (n == 0)
            throw new ArgumentOutOfRangeException("n", "(a mod 0) is undefined.");

        //puts a in the [-n+1, n-1] range using the remainder operator
        int remainder = a%n;

        //if the remainder is less than zero, add n to put it in the [0, n-1] range if n is positive
        //if the remainder is greater than zero, add n to put it in the [n-1, 0] range if n is negative
        if ((n > 0 && remainder < 0) ||
            (n < 0 && remainder > 0))
            return remainder + n;
        return remainder;
    }
}

-

Test suite flexlm*용 xUnit:

    [Theory]
    [PropertyData("GetTestData")]
    public void Mod_ReturnsCorrectModulo(int dividend, int divisor, int expectedMod)
    {
        Assert.Equal(expectedMod, dividend.Mod(divisor));
    }

    [Fact]
    public void Mod_ThrowsException_IfDivisorIsZero()
    {
        Assert.Throws<ArgumentOutOfRangeException>(() => 1.Mod(0));
    }

    public static IEnumerable<object[]> GetTestData
    {
        get
        {
            yield return new object[] {1, 1, 0};
            yield return new object[] {0, 1, 0};
            yield return new object[] {2, 10, 2};
            yield return new object[] {12, 10, 2};
            yield return new object[] {22, 10, 2};
            yield return new object[] {-2, 10, 8};
            yield return new object[] {-12, 10, 8};
            yield return new object[] {-22, 10, 8};
            yield return new object[] { 2, -10, -8 };
            yield return new object[] { 12, -10, -8 };
            yield return new object[] { 22, -10, -8 };
            yield return new object[] { -2, -10, -2 };
            yield return new object[] { -12, -10, -2 };
            yield return new object[] { -22, -10, -2 };
        }
    }

dcastro
ShreevatsaR
그는 7년 전 댓글을 달았습니다
0

첫째, a '보통' 기능을 통해 모드용 불렀으매 양수입니다 계수 (참고합니다 변수 '라일래스' 에서 처음 질문으로 중인 답변됨 임무야, 이는 아마도 배반자들의 제외어) 이므로 함수를 doesn& # 39, t really 변경해야 한다는 일하기 제외어 지수. (그래서 나는 언급하십시오 치료를 제외어 탄성 계수, not in my answer 대한 논평을 답을 할 수 있다.) (계속)

ShreevatsaR
그는 7년 전 댓글을 달았습니다
3

둘째, 어떻게 해야 할 일이 가능한 부정적 탄성 계수 (이컨스트) 는 발생원인. [예 위키백과] 참조 (https://en.wikipedia.org/w/index.php? title =, = 5881012 modulo_operation&amp 올디드 38 # remainder_calculation_for_the_modulo_operation). 일반적으로, 정수론, 항상 긍정적인 &quot 에서, 나머지 chosen&quot, 이는 it 뿐만 아니라, 내가 어떻게 소식을 (, 초등학교에서요 Burton& # 39 의 s 가 된다). 또한 knuth eventtest it that way (특히, 'r = a - b floor (a / b)' 가 항상 양수입니다). 예를 들어 컴퓨터 시스템, 파스칼 및 메이플 정의하십시오 사이에서도 수 있도록 항상 양수입니다.

dcastro
그는 7년 전 댓글을 달았습니다
0

유클리드 정의마다 @shreevatsar 것으로 알고 있다 - 그러나 나는 결과는 항상 긍정적인 인상을 아래에 있는 값을 반환되므로 대부분의 현대 모드용 구현을 위한 범위 [n + 1, 0], 즉, 10 ~ 12 모드용 &quot 제외어 약수, n&quot - = - 2. [구글 계산기에는] 로 생각하고 아이브 (http://goo.gl/wFgf5V), [파이썬] (http://repl.it/languages/Python), [루비] (http://tryruby.org/levels/1/challenges/0) 및 [스칼라] (http://www.simplyscala.com/), 그들 모두가 이 조약에 따라.

dcastro
그는 7년 전 댓글을 달았습니다
0

또한 목록에 추가합니다. [구성표가] (http://repl.it/N34) 및 [Javascript] (http://repl.it/N35)

ShreevatsaR
그는 3년 전 댓글을 달았습니다
1

다시 [이] (https://en.wikipedia.org/w/index.php? title =, = 7641383 modulo_operation&amp 올디드 (54) 가 여전히 좋은 읽습니다. 항상 이 &quot positive"; 정의 (my answer) 와 일관성입니까 ALGOL, Dart, 메이플, 파스칼, Z3, etc. 이 &quot 예증으로 divisor"; (이 답) 일관성입니까 호스트당: APL, 코볼, J, 루아, 펄, 파이썬, 루비, Tcl · MS 엑셀 · Mathematica, R , 모두 &quot 예증으로 dividend&quot, 어울리지 않는 등 있다. 같이. AWK, 배시, bc, C99, C++11, C #, Java, PHP, 녹, OCaml, D, 에펠, 얼랭 http://www. gnu., 스칼라, Swift, VB, x86 어셈블리, etc. 정말 don& 볼 수 있는 방법을 t # 39 한 규칙은 &quot 하였노라너희가 correct";; 그리고 다른 wrong&quot ";).

ShreevatsaR
그는 일 년 전 댓글을 달았습니다
0

브트와, 자바, 파이썬, 루비, 현재 이 오토메이티드 일관되게 주장하는 &quot Google& # 39 의 스칼라, 배열, Javascript, 하지만 실제로 이러한 it& Calculator&quot, Java, Javascript, s # 39 와 일치하지 않는 스칼라와, 이를 위해 그들은 모두 10 ~ 12 모드용 해 줄 수 있으며, 이 질문에 - 2 (및 파이썬, 루비, Google& # 39 의 계산기에는) 를 통해 8. # 39 의 파이썬 및 Java 와 함께 할 수 있는 것은 모두 동시에 일관됨 it& / 자바스크립트, 이들은 서로 어울리지 않는. 한편 [세이지] (http://www.sagemath.org/) 는 '항상' 모드용 되돌려줍니다 있는 긍정적인 결과를: '모드용 (12, - 10) = 모드용 (12, 10) = 8'.

답변 2 비교 우위를 점할

(x%m + m)%m;

int r = x%m;
return r<0 ? r+m : r;

실제로 던질 수 있는 첫 번째 아니예 언급한 사실을 로베르 프로스세페시옹 won& # 39, 두 번째 '동시에' t. 기본 선택 해제됨 컨텍스트로, 첫 번째 오토메이티드 반품해야 틀린 답을 함께 더욱 악화시키고 있습니다 (자세한 내용은 '모드용 (린t.막스발루 맥스발루 - 1, int.)' 예). 그래서 더 빠를 뿐 아니라, 두 번째 답변 더 정확한 것으로 보인다.

Devs 보다 성능이 인식

uint wrap(int k, int n) ((uint)k)%n

작은 성능 비교

Modulo: 00:00:07.2661827 ((n%x)+x)%x)
Cast:   00:00:03.2202334 ((uint)k)%n
If:     00:00:13.5378989 ((k %= n) < 0) ? k+n : k

[Here] 에 따라 비용을 절감할 수 있는 것을 보면 성능 단위 (http://www.codeproject.com/Articles/8052/Type-casting-impact-over-execution-performance-in)

Vive la déraison
그는 5년 전 댓글을 달았습니다
3

'할 수 있는' 이라고 생각되다 인컨텍스트 또는 7. 10 - 3 - 3% 그 이후, 7 은 음이 아닌 그들이성년에 약간만이라도 해답이야 시스템 구축을 되돌려줍니다 3. 모두 매개 변수를 uint) '과' 캐스트 분리하십시오 변경해야 합니다.

j_schultz
그는 3년 전 댓글을 달았습니다
4

단지 'n' 은 산술 avamer 서명되지 않은 경우 두 개의 전원을 사용할 수 있으며, 이 경우 단순히 논리 및 (' (단위) ᄀ씨 &amp. (n - 1) ') 를 대신 컴파일러와의 doesn& 경우 이미 # 39, t do it for you (컴파일러에도 머리가 너무 종종 그림 이 아웃하려면).

고객의 부정적 결과를 계수 (라일래스) 를 추가하기만 you&) 과 # 39, ll be fine.

나는 해트트릭을 기록하는 등) 에 의해 제시된 피터 ᄂ씨 루이스냐 이 스레드할: &quot, 만약 n 이 결과를 얻을 수 있는 제한된 범위, 그럼 간단히 운영까지도 추가에는 상수입니다 배수인지 있는 것으로 알려진 [이 약수] 의 minimum.&quot 절대값입니다 큽니다.

만일 내가 값을 가지고 있는 d 시행하십시오 도 보고 싶습니다

d % 180f

  • d 는 문제가 아닌 것이 보고 싶습니다 * 제외어 관심용 그냥 이렇게:

(d + 720f) % 180f

  • D * 가정합니다 수 있지만, 예상보다 부정적으로 - 720e 결코 부정적인 것으로 알려졌다.
Community
Evgeni Sergeev
그는 6년 전 댓글을 달았습니다
2
  • 1: 아닌 일반 충분히 (및 매우 쉽습니다 전달자로써 더 일반적인 솔루션).
M.kazem Akhgary
그는 3년 전 댓글을 달았습니다
2

실제로 이 아주 도움됐네. 의미 있는 범위, 이 경우 계산 과정을 단순화할 수 있습니다. 저의 경우는 https://math.stackexchange.com/questions/2279751/how-to-simplify-2-modular-operators

NetMage
그는 일 년 전 댓글을 달았습니다
0

그냥 데이로프위크 대한 정확한 계산 (알려진 다양한 - 6 에서 +6) 와 이를 활용한 구했잖아 '%' 이 두 가지.

나는 게 하나 있다. 이는 확증하노라 국한됨 양수입니다 숫자를 파이썬 ' 4%3 인쇄하십시오. 3%3 인쇄하십시오. 3%3 인쇄하십시오. 2%3 인쇄하십시오. 1%3 인쇄하십시오. 0%3 인쇄하십시오. 1%3 인쇄하십시오. 2%3 인쇄하십시오. 3%3 인쇄하십시오. 4%3 인쇄하십시오. '- 이 내게 준. '1 0 0 2 1 0 2 1 0 2 ' 그러나 이에 대한 답을 확증하노라 캜, 이는 @gormenghastly 주어진다.

#include<stdio.h>

int main()
{
printf("\n %d",3 % 3);
printf("\n %d",4 % 3);
printf("\n %d",3 % 3);
printf("\n %d",2 % 3);
printf("\n %d",1 % 3); 
printf("\n %d", 0 % 3);
printf("\n %d",-1 % 3);
printf("\n %d",-2 % 3);
printf("\n %d",-3 % 3);
printf("\n %d",-4 % 3);

return 0;
}

나는 정의를 통해 알 수 있다, 그러나 이제 나는 또 내가 너무 파이썬 출력입니다 뭐로부터요 %

모든 것은 긍정적이지만 it& # 39 의 약수 경우 여기에 대답을 작동합니까 멋지구리해요 아니고 완료. 다음은 '항상 [0, b)' 에 있는 내 구축 등 다양한 되돌려줍니다 작업자쪽에서 예증으로 출력물에는 동일합니까 있 는 제수 할 수 있도록 제외어 제수 같은 출력 끝점에는 범위.

'포스모드 되돌려줍니다 (5, 3)' '2' '포스모드 (5, 3)' '1' 되돌려줍니다 '포스모드 (5, - 3)' '-' 되돌려줍니다 '포스모드 (5, - 3)' '되돌려줍니다 -2'

    /// <summary>
    /// Performs a canonical Modulus operation, where the output is on the range [0, b).
    /// </summary>
    public static real_t PosMod(real_t a, real_t b)
    {
        real_t c = a % b;
        if ((c < 0 && b > 0) || (c > 0 && b < 0)) 
        {
            c += b;
        }
        return c;
    }

(여기서 '유형' real_t 숫자를 사용할 수 있습니다)