有一字节一维数组 A, 数据长度为 255, 数组的后一数据值是前一数据值加 09H 或 0AH.
数组的第一个数据值为: C9H.
注: 数组的各数据值只取一字节,即取 低字节 (BYTE)现给出数组的偏移量 n ( 0<= n <= 255 ) ,求出在其地址上对应的值。如: A = { C9H, D3H, DDH, E6H, F0H, FAH, 04H ...... }
当 n=3, 解的结果就是 E6H
因为数组是已知的,你可以自己整理出一些数据表方便与求解,但算法要在时间与空间上最简。
数组的第一个单元项数据值为: C9H.
注: 数组的各单元项数据值只取一字节,即取 低字节 (BYTE)现给出数组单元项的偏移量 n ( 0<= n < 255 ) ,求出在其地址上对应的单元项数据值。如: A = { C9H, D3H, DDH, E6H, F0H, FAH, 04H ...... }
当 n=3, 解的结果就是 E6H
因为数组中各单元项是已知的,你可以自己整理出一些数据表方便于求解,但算法要在时间与空间上最简。
每隔16组就是一个固定循环。
A[n]=C9+(n mod 16)*09H不好意思,现在用VB.net做程序,C语法忘得差不多了不知道我的解符合楼主思路不?看里面有算法的,我进来看看
1、
我上面有个例子数组:
如: A = { C9H, D3H, DDH, E6H, F0H, FAH, 04H ...... }
当 n=3, 解的结果就是 E6H这其中: A[1] - A[0] = D3H - C9H = 0AH
A[2] - A[1] = DDH - D3H = 0AH
A[3] - A[2] = E6H - DDH = 09H
.....加 09H 或 0AH ,意思是有一些后一个单无数据是前一个单元数据加 09H ; 另有一些后一个单无数据是前一个单元数据加 0AH。数据的所有单无数据是已知的,只是没有这么有规律。有些加 09H, 有些加 0AH.2、
时间与空间上最简
如: 数组 A[255] 就占用了 255 字节的间空,但如果把 A 数组重新整理后,可能就不用 255 字节的空间了,同时运行时间上可能要多点。
所以要在时间与空间两都之间打个平衡点。
正因为数组是已知的,从使用空间的角度讲,就可以对这个数组进行压缩。
如果不对数组进行压缩,在使用空间上正好是一个最大值(压缩后会占用
一定的运行时间)。2、
并且只这个数组而言,使用A[n]的行式寻址,它所占用的寄存器或RAM单元
并不占优势。但寄存器或RAM本身就是一个宝贵的资源。
好了,这个贴子结了。