内容会不断更新。

配置过程是下载清华大学打包好的镜像,用虚拟机运行Ubuntu,再开启共享文件夹进行使用。

问题1:bitXOR

用~和&实现异或。思路是输入为0011和0101,输出为0110即可。(真值表的二进制化)

先使用一至两次~和&组合出0100和0010,但由于没有|也没有+,转而通过先~再&再~,转化为其反面来实现这一功能。

最终为return ~(~(~A&B)&(~(A&(~B))));

问题2:tmin

直接通过左移位完成即可。(也许可以开挂写-2147483648?)

最终为return 1<<31;

问题3:isTmax

注意到Tmax的显著特点是即将溢出,溢出后位表示完全变化。故有性质x^(x+1)==0

但同样的,-1也有这一性质,因为截断也会使位表示完全变化。还需加入限定条件x+1 != 0

在这个问题中,对所有其他条件返回一个相同值时,!的价值就体现了出来。可惜始终表示否定,有时当满足不适用条件时表达式值为零,则不得不使用两层嵌套。

最终为return !(~(x^(x+1)))&(!(!(x+1));

未完待续。