回 帖 发 新 帖 刷新版面

主题:[讨论]好一道下午题

为便于描述屏幕上每个像素的位置,在屏幕上建立平面直角坐标系。屏幕左上角的像素设为原点,水平向右方向设为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)的值为2的15-K次方。
 第一步根据用户指定像素的位置坐标(x,y),算出该像素的位置所属的数组元素MAP(V)。这一步的具体实现过程如下:
 (1)、将x存入变量X,将y存入变量Y。
 (2)、将Y左移_____位,仍存入变量Y。
 (3)、将X右移_____位,并存入变量S。
 (4)、计算Y+S,存入变量V,得到像素的位置所属的数组元素MAP(V)。
 第二步算出指定像素在MAP(V)中所对应的位置K(K=0,……,15)。这一步的具体实现如下:
将变量与二进制数_____进行逻辑与运算,并存入变量K。
 第三步根据用户要求将数组元素MAP(V)左起的第K位设置为“1”或“0”。这一步的具体实现过程如下:
 (1)为在指定像素置“亮”,应将MAP(V)与BIT(K)进行逻辑_____运算,并存入MAP(V)。
 (2)为在指定像素“暗”,应先将BIT(K)各位取反,再将MAP(V)与BIT(K)进行逻辑_____运算,并存入MAP(V)。

回复列表 (共3个回复)

沙发

左移3位
右移4位
将变量X与二进制数0000000000001111进行逻辑与
OR运算
AND运算

不知道对不对?

板凳

04年的试题?

3 楼

答案是主样的,不知道怎么来的。

我来回复

您尚未登录,请登录后再回复。点此登录或注册