阅读下列说明和流程图,将应填入(n)的语句写在对应栏内。 【流程图】 下面的流程图描述了对16位二进制整数求补的算法。计算过程是:从二进制数的低位 (最右位)开始,依次向高位逐位查看,直到首次遇到“1”时,停止查看。然后,对该“1”位左面的更高位(如果

admin2009-02-15  31

问题 阅读下列说明和流程图,将应填入(n)的语句写在对应栏内。
【流程图】

下面的流程图描述了对16位二进制整数求补的算法。计算过程是:从二进制数的低位 (最右位)开始,依次向高位逐位查看,直到首次遇到“1”时,停止查看。然后,对该“1”位左面的更高位(如果有的话),逐位求反,所得的结果就是对原二进制数求补的结果。
   例如:对二进制整数10111001 10101000求补的结果是01000110 01011000。
   设16位二进制整数中的各位,从低位到高位,依次存放在整型数组BIT的BIT[1]~BIT[16]中。例如,二进制整数10111001 10101000存放在数组BIT后,就有BIT1[1]=0, BIT[2]=0,……,BIT[15]=0,BIT[16]=1。
   流程图(如图1所示)中(1)处按“循环变量名:循环初值,增量,循环终值”格式描述。若流程图中存在空操作,则用NOP表示。

选项

答案(1)i: 1, 1, 16 (2)1->sw (3)0→BIT[i] (4) NOP,或空操作 (5)1->BIT[i]

解析 该流程图的功能在说明中已经解释了,要解该题关键要搞清楚流程图中引用的变量sw的含义。通过阅读流程图的说明和流程图可知,变量sw主要用来定义是否已经找到某一位是“1”:当sw=0时,说明到目前为止还没有哪一位是“1”,不需要对该位求反;当sw=1时,说明已经有一位是“1”,需要对该位求反。
   先来看(1)空。(1)空是要写出循环变量名、循环初值、增量和循环终值,该题要从遍历整型数组BIT的所有元素,从BIT[1]开始到BIT [16]结束,再看流程图的第1个判断用的变量是i,这样就可判断循环变量名为i,循环初值为1,增量为1,循环终值为16。这样(1)空的答案为“i:1,1,6”。
   在这个循环中,当第i位是1时,即BIT(i)=1,进入左分支。这时需要判断sw值,若sw=0,需要将sw置为1;“若sw=1,需要对将BIT(i)置为 0。这样(2)空的答案为“1->sw”;(3)空的答案为“0->BIT”。
   同样,当第i位是。时,即BIT(i)=0,进入右分支。这时需要判断 sw值,若sw=0,将不作任何操作;若sw=1,需要对将BIT(i)置为1。这样(4)空的答案为“NOP”;(5)空的答案为“1->BIT”。
转载请注明原文地址:https://kaotiyun.com/show/AbjZ777K
0

最新回复(0)