急求C#运算符r3 = (0x6c000 | ((DEN >> 12) & 0x3ff))指导

时间:2021-09-12 17:24:44
下面这段程序时什么意思呢,哪位大侠能帮我写下每句的注释么,小弟感激不尽~
C#代码如下:
public void calc_reg(double f, int R)
        {
            public const int DEN=2500000;
            public const int OSC=10;
            public const int R1=2;
            public const int R2=4;
            double pdf, NUM;
            int N;

            pdf = (double)OSC / (double)R;
            N = (int)(f / pdf);
            //printf("N:%d\n", N);
            NUM = (f / pdf - N) * DEN;
            //printf("NUM:%lf\n", NUM);
            r3 = (0x6c000 | ((DEN >> 12) & 0x3ff));
            r2 = 0x40000 | ((DEN << 6) & 0x3ffc0) | (R & 0x3f);
            r1 = 0x20000 | ((N << 2) & 0x1c00) | (((int)NUM >> 12) & 0x3ff);
            r0 = (N << 12 & 0xff000) | ((int)NUM & 0xfff);

            r3 = (r3 << 4) | 0x3;
            r2 = (r2 << 4) | 0x2;
            r1 = (r1 << 4) | 0x1;
            r0 = (r0 << 4) | 0x0;
        }
其中f为任意输入的值,R=2或R=4
后面这些r3 = (0x6c000 | ((DEN >> 12) & 0x3ff));r3 = (r3 << 4) | 0x3;之类的看不懂啊~
还有像lmxr.r[3] = IPAddress.HostToNetworkOrder((r3 << 4) | 0x2)这种里面的((r3 << 4) | 0x2是个什么意思呢?

5 个解决方案

#1


二进制计算,位移、与或非,这些都是计算机专业的基础知识...去找本计算机原理入门书看吧...

#2


引用 1 楼 vrhero 的回复:
二进制计算,位移、与或非,这些都是计算机专业的基础知识...去找本计算机原理入门书看吧...

我知道他都是些移位、异或、与等运算,我想知道代码实现的功能是什么

#3


这是个寄存器值计算函数,f为输入的数值(单位MHz),帖子没写清楚,我想请教一下这个代码是想实现什么样的功能,它这么移位、异或、与以后对寄存器有什么影响?为什么要这么做呢?小弟感激涕零

#4


鬼知道功能是什么,从calc_reg这个命名看应该是个简单加密算法用来计算注册码的...

IPAddress.HostToNetworkOrder((r3 << 4) | 0x2)这个是把一个IP地址左移一段再和10或,就是生成一个不相关的新IP地址...

#5


| 二进制按位或运算
(r0 << 4)  <<左移运算符,括号的运算结果是将r0左移4位,低位补零
0x打头是十六进制数
从代码反推逻辑 急求C#运算符r3 = (0x6c000 | ((DEN >> 12) & 0x3ff))指导

#1


二进制计算,位移、与或非,这些都是计算机专业的基础知识...去找本计算机原理入门书看吧...

#2


引用 1 楼 vrhero 的回复:
二进制计算,位移、与或非,这些都是计算机专业的基础知识...去找本计算机原理入门书看吧...

我知道他都是些移位、异或、与等运算,我想知道代码实现的功能是什么

#3


这是个寄存器值计算函数,f为输入的数值(单位MHz),帖子没写清楚,我想请教一下这个代码是想实现什么样的功能,它这么移位、异或、与以后对寄存器有什么影响?为什么要这么做呢?小弟感激涕零

#4


鬼知道功能是什么,从calc_reg这个命名看应该是个简单加密算法用来计算注册码的...

IPAddress.HostToNetworkOrder((r3 << 4) | 0x2)这个是把一个IP地址左移一段再和10或,就是生成一个不相关的新IP地址...

#5


| 二进制按位或运算
(r0 << 4)  <<左移运算符,括号的运算结果是将r0左移4位,低位补零
0x打头是十六进制数
从代码反推逻辑 急求C#运算符r3 = (0x6c000 | ((DEN >> 12) & 0x3ff))指导