当前位置:计算机-软考初级

[问答题]图7-5所示的流程图描述了对8位二进制整数求补的算法.该算法的计算过程如下:从二进制数的低位(最右位)开始,依次向高位逐位查看,直到首次遇到“1”时,停止查看.然后,对该“1”位左面的更高位(如果有的话),逐位求反,所得的结果就是对原二进制数求补的结果.
例如:对二进制整数10101000求补的结果是01011000.
设8位二进制整数中的各位,从低位到高位,依次存放在整型数组BIT的BIT[1]~BIT[8]
中.例如,二进制整数10101000存放在数组BIT后,就有BIT[1]=0, BIT[2]=0, …, BIT[7]=0, BIT[8]=1.若流程图中存在空操作,则用NOP表示.
流程图中(1)处按“循环变量名:循环初值,增量,循环终值”格式描述.
[解析] 本题考查求补运算.求补运算是对一个数的各二进制位按位求反后再加1.例如:二进制10101000按位求反后得到的二进制是01010111,加1后为01011000.也可以这样来看,原二进制从最右边开始到遇到的第1个1为止都不变,而后面剩下的位按位求反即可.

本题流程图采用的是后一种思路,首先设置一个标志sw的值为0,从最右边一位开始往左循环遍历整个二进制数,到遇到第1个1后将标志位置1.由此可见,循环要进行8次,循环变量值依次从1递增到8.根据题目要求按“循环变量名:循环初值,增量,循环终值”格式描述循环,而循环开始下面一条判断是“BIT[i]=1?”,所以循环变量是i,第1空应填i:1,1,8.
如果当前遍历的二进制位BIT[i]是1,且标志sw为0时,则证明是第1次遇到1,所以直接设置sw为1即可,故第2空应填1→sw.
如果当前遍历的二进制位BIT[i]是1,且标志sw为1时,说明已经不是第1次遇到1了,所以直接设置当前二进制位为0即可,故第3空应填0→BIT[i].
如果当前遍历的二进制位BIT[i]是0,且标志sw为0时,则证明还没有遇到过一次1,所以该步什么都不用做,故第4空应填NOP.
如果当前遍历的二进制位BIT[i]是0,且标志sw为1时,说明已经遇到过1了,所以该步需将当前的二进制位求反,故第5空应填1→BIT[i].

相关题目

关于我们 | 网站声明 | 联系我们 | 违法和不良信息举报

Copyright © 2020 - 2022
石家庄晋咸软件科技有限公司  版权所有
冀ICP备2021011520号-1
冀公网安备 13012102000087号