x = x & ~077 与 x = x & 0177700 都将 x 后六位置 0,x & ~077与机器字长无关,可移植性强,而且没有额外的开销;而 x & 0177700将 x 假定为16位长度的数值,当机器不同导致变量 x 的长度改变时,结果不同,不具有可移植性。
因此,在需要用到某些位为0或者1而高位全为1的数据时,采用将高位为0的数取反的方式获得,可以保证可移植性。
本文探讨了两种位操作方法:使用按位与运算符结合取反值和直接使用数值进行位屏蔽。分析了这两种方法对于确保代码的可移植性的影响,并指出在需要将某些特定位置0的情况下,采取高位为0的数取反的方法更为优选。
x = x & ~077 与 x = x & 0177700 都将 x 后六位置 0,x & ~077与机器字长无关,可移植性强,而且没有额外的开销;而 x & 0177700将 x 假定为16位长度的数值,当机器不同导致变量 x 的长度改变时,结果不同,不具有可移植性。
因此,在需要用到某些位为0或者1而高位全为1的数据时,采用将高位为0的数取反的方式获得,可以保证可移植性。
5004
3635

被折叠的 条评论
为什么被折叠?