阅读下列算法说明和算法,将应填入(n)处的字句写在对应栏内。 【算法说明】 为便于描述屏幕上每个像素的位置,在屏幕上建立平面直角坐标系。屏幕左上角的像素设为原点,水平向右方向设为X轴,垂直向下方向设为Y轴。 设某种显示器的像素为128×128,

admin2009-02-15  25

问题 阅读下列算法说明和算法,将应填入(n)处的字句写在对应栏内。
【算法说明】
   为便于描述屏幕上每个像素的位置,在屏幕上建立平面直角坐标系。屏幕左上角的像素设为原点,水平向右方向设为X轴,垂直向下方向设为Y轴。
   设某种显示器的像素为128×128,即在每条水平线和每条垂直线上都有128个像素。这样,屏幕上的每个像素可用坐标(x,y)来描述其位置,其中x和y都是整数,0≤x≤127, 0≤y≤127。
   现用一维数组MAP来存储整个一屏显示的位图信息。数组的每个元素有16位二进位,其中每位对应一个像素,“1”表示该像素“亮”,“0”表示该像素“暗”。数组MAP的各个元素与屏幕上的像素相对应后,其位置可排列如下:
   MAP(0),MAP(1),…,MAP(7)
   MAP(8),MAP(9),…,MAP(15)
   MAP(1016),MAP(1017),…,MAP(1023)
   下述算法可根据用户要求,将指定坐标(x,y)上的像素置为“亮”或“暗”。
   在该算法中,变量X,Y,V,S,K都是16位无符号的二进制整数。数组BIT中的每个元素BIT(K)(K=0,…,15)的值是左起第K位为1,其余位均为0的16位无符号二进制整数,即BIT(K)的值为215-k。
   【算法】
   第1步  根据用户指定像素的位置坐标(x,y),算出该像素的位置所属的数组元素 MAP(V)。这一步的具体实现过程如下:
   1.将x送变量X,将y送变量Y;
   2.将Y左移(1)位,仍存入变量Y;
   3.将X右移(2)位,并存入变量S;
   4.计算Y+S,存入变量V,得到像素的位置所属的数组元素MAP(V)。
   第2步  算出指定像素在MAP(V)中所对应的位置K(K=0,…,15)。这一步的具体实现过程如下:将变量X与二进制数(3)进行逻辑乘运算,并存入变量K。
   第3步  根据用户要求将数组元素MAP(V)左起第K位设置为“1”或“0”。这一步的具体实现过程如下:
   1.为把指定像素置“亮”,应将MAP(V)与BIT(K)进行逻辑(4)运算,并存入MAP(V)。
   2.为把指定像素置“暗”,应先将BIT(K)各位取反,再将MAP(V)与BIT(K)进行逻辑(5)运算,并存入MAP(V)。

选项

答案(1)3 (2)4 (3)1111 (4)或(加) (5)与(乘)

解析 (1)由于每一行像素占用8个数组元素,所以第y行的像素占用数组的第8×y到8×y+7号元素。于是y需要乘以8存入变量 Y,即左移3位。(2)x表示y行上的第x列像素,因为每个数组元素表示16个像素,所以需要将x除以16,得到所在数组元素位置,即右移4位。 (3)X的后四位即表示像素在MAP(V)中所对应的位置,因此取x的后 4位送入K即可。(4)因为0和1与1逻辑或的结果都是1,而与0逻辑或的结果不变。所以将MAP(V)与BIT(K)进行逻辑或(加),即可将MAP(V)指定位置“1”。(5)0和1与0逻辑与的结果都是0,而与1逻辑与的结果不变,所以将MAP(V)与取反后的BIT(K)进行逻辑与 (乘),即可将MAP(V)指定位置“0”。
转载请注明原文地址:https://jikaoti.com/ti/TTW7FFFM
0

最新回复(0)