我想问一下这个C语言算法中的m是什么?请看图!

Python012

我想问一下这个C语言算法中的m是什么?请看图!,第1张

q(n,m) , n 是已知正整数。m 表示把 n 拆分后的序列中的最大 数。

例如:

5 + 1 ( 拆分后的 序 列, 最大 数 m=5, q=1)

4 + 2, 4 + 1 + 1 ( 序列, 最大数 m=4,q=2)

3 + 3, 3 + 2 + 1, 3 + 1 + 1 + 1 (序列,m=3,q=3)

2 + 2 + 2, 2 + 2 + 1 + 1, 2 + 1 + 1 + 1 + 1 (序列,m=2,q=3)

1 + 1 + 1 + 1 + 1 + 1 (序列,m=1,q=1)

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

m==1 或 n==1, 只有一个划分 q(1,1)=1

m==n, q(n,n)=q(n,n-1) + 1

m<n , q(n,m)=q(n,m-1) + q(n-m,m)

这个是c语言中的,按位取反操作

举个例子

~100=-101,

首先看等号左边

(100)

的二进制表示为:

0110

0100

按位取反的意思就是每一位取反,0变1,1变0

所以:

~100

的二进制表示为:1001

1011

所以等号左边=1001

1011

再看右边

-101.

一旦看到出现负数,那么这个数一定是按有符号数的规则来表示的。一个二进制数

按位取反并加一以后就可以得到它自己的负数的补码,也就是说:

~x+1=-x

所以,我们把101按位取反加一

先取反:

~101=10011010

再加一:

~101+1=10011011=-101

所以等号右边=10011011=左边,所以等号成立。

p.s:补充一句,计算机内存里的逻辑存储位是非常复杂的,我这里即使讲得再清楚也无法保证你完全明白。

一般来说,汇编语言的书的开头部分会详细讲解这部分知识以服务于汇编语言,请参阅之。