模数和二进制数

时间:2016-05-30 21:54:35

标签: c++ binary modulus

#include <iostream>
using namespace std;



int main()
{
    int index = 0;
    int val;
    int x;

    while (val != 0)
    {

    cin >> val;



    for (index = 1; index < 32; index++)
    {
        x = val * index - index / index;
        cout << x << " " << val << " " << index << endl;
        cout << x % 4 << endl;
        cout << x % 3 << endl;
        cout << x % 2 << endl;

    }
    }


    return 0;
}

为什么当输入为&lt; 1,2,3,4 ...&gt;时每个第31个索引都用类似于输入1的算法编码,输入1只是索引-1;但模式是:

of twelves(1-12,12-224)[000,111,220,301,010,121,200,311,020,101,211,321],[000,111,220,301,010] ...重复输入&lt; 1&gt ;;

of 31st index:[1] 200,111,020,301,210,121,000,311,220,101,010,321,200 ...... [13]

为什么这种关系是相似的,并且二元中有这个原因吗?

编辑:为了澄清问题,当你取一个特定整数的余数,并且关系变得特定于每个增量...之所以这是因为二进制以及语义是如何基于实现一种收敛方式的整数值到二进制值?我知道高级编程在程序中使用哈希和通信......但主要思想是整数值是二进制特定的...这是一个二进制特定操作还是只是一些显示数字模式的随机算法?

1 个答案:

答案 0 :(得分:1)

重要事实:

12 mod 2 == 12 mod 3 == 12 mod 4 == 0

另一个重要的事实,更抽象一点:

(x + y) mod k == ((x mod k) + (y mod k)) mod k

(假设x,y和k都是整数。)

从第二个事实,我们可以推断:

(x + 12) mod k == ((x mod k) + (12 mod k)) mod k

碰巧:

(x mod k) mod k == x mod k

现在我们知道了

(x + 12) mod 2 == (x mod 2) + 0 == x mod 2
(x + 12) mod 3 == (x mod 3) + 0 == x mod 3
(x + 12) mod 4 == (x mod 4) + 0 == x mod 4

因此mod的模式将以12的周期重复。<​​/ p>

通常,循环长度将是除数的最小公倍数。