python中移位运算符_如何使用python使用位移位运算符来找出以2为基数的某个数字的某个位数?...

抱歉,这个答案太长,需要更多的段落分隔符。但不管怎样,还是要读一读,因为这是迄今为止唯一一本试图回答你“模糊”问题的书。在

有趣的是,bin函数确实存在!它几乎完全符合你的要求。(它在前面加了一个0b,但是因为你是从右边数的,所以没关系。)

抓包是编程的好方法之一。(有人说这是很大的一部分,也有人说是很小的一部分,但这绝对是一部分。)如果你做了足够多的这样的练习,位运算符最终会成为你包的一部分。你将能够看问题几秒钟,对自己想“这闻起来像是可以通过位转换来解决的”,五分钟后你就会有一个有效的解决方案。在

更重要的是要有一袋“元把戏”。这个包通常小得多,但很有用。元把戏包里最大的一个包包是“当我不知道怎么做的时候该怎么做”。从你的问题中我可以看出,你在这个隔间里已经有了至少两个这样的把戏。我想你用的第一个技巧是“没有电脑我怎么办?”。我个人经常用这个。你想:如果有人给我一个用二进制写的数字,并要求第n个数字,我会一直数到n。干得好!然后你把它翻译成了代码,但并不完全正确。如果a的b第b位是打开的,但是您却检查了b的第b位。哎呀:)

但当然,这不使用按位运算符。所以你又用了第二个窍门:寻求帮助!我也经常用这个。我想我在这个网站上问的问题比我回答的要多。它成功了:你有两种方法来编写代码,你将得到第三种方法。在

现在我再给你两个小把戏。您可能已经知道这些,但如果是这样的话,您似乎忘了应用这个:

解决一个简单的案例(越简单越好)

选择一个好的特殊情况开始可能需要一些直觉和/或反复试验,但在这里不难看出,最简单的情况是当你被要求得到最不重要的一点时。(有趣的事实:这个位告诉你数字是偶数还是奇数。很明显,一旦有人提到它,但有时不会更早。)那么如何做到这一点呢?只使用位移有点棘手。(Flynsee设法做到了;参见他的last_bit函数。)但是大概你可以使用其他的按位运算,如果你读过TessellatingHeckler的答案,你已经知道他使用的是除移位以外的按位运算。如果你还没读过,这是一个挑战自己的好机会。在你想了几秒钟之前不要读下一个句子。一两分钟就更好了。也许我应该用“剧透”标签?不。好了,够了,这里完美的位运算符是位和。尤其是,number&1会告诉你一个数字是偶数还是奇数。(如果这不明显,停下来思考几分钟,直到你明白原因。)

我们现在准备好第二个技巧:

把难的案子变成容易的案子

这并非总是可能的,但往往值得尝试。在这里,我们可以这样处理问题:我有一种方法来获得最后一位(或第一位,这取决于您从哪边开始计数),但是我想要第b位。如果只有某种方法可以将第b位移到我想要的位置。但所有这些蠢事都挡在我的路上。我希望我能设法摆脱他们。等一下。。。我想移动第b位?移动?也叫轮班?嗯。。。在

我现在就让你解决剩下的问题:)我希望这至少能部分地回答你的“模糊”问题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值