问题的本身并不复杂,只要把所有A、B 互相排斥的条件列举出来就可以完成本题的要 求。由于本题要求只能使用一个变量,所以必须首先想清楚在写代码的时候,有哪些信息需 要存储,并且尽量高效率地存储信息。稍微思考一下,可以知道这个程序的大体框架是:
可以先把已知变量类型列举一下,然后做些分析。 对于bool类型,估计没有办法做任何扩展了,因为它只能表示true和false 两个值;而 byte 或者 int 类型,它们能够表达的信息则更多。事实上,对本题来说,每个子都只需要 9 个数字就可以表达它的全部位置。
一个8位的byte类型能够表达28=256个值,所以用它来表示A、B的位置信息绰绰有余, 因此可以把这个字节的变量(设为b)分成两部分。用前面的4 bit表示A的位置,用后面的 4 bit表示B的位置,那么4个bit可以表示16个数,这已经足够了。
那么:如何使用bit级的运算将数据从这一byte变量的左边和右边分别存入和读出呢?
大家容易想到的是对那个变量进行各种位运算,最后输出结果。但是其实C语言中还提供了一种存在于结构体中叫做位域的类型,因此程序就变得简单多了。
代码实现
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- oldu.cn 版权所有 浙ICP备2024123271号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务