如何有效地知道字符中第一个(左-右)位的位置 [英] how to know the position of the first(left -> right) '1' bit in a char efficiently

查看:0
本文介绍了如何有效地知道字符中第一个(左-右)位的位置的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

正如标题所说,我有一个字符(例如00101011),我如何知道其中第一个‘1’位的位置?(在本例中,它是6,如果我们认为最右边的位置是0,则为5)。
我知道循环移位会很有帮助,但有没有更有效的方法呢?

推荐答案

有一些小笼子(正如Codor提到的)可以做得比只做Shift更好,但O(1)中没有。我想到了二进制搜索。

恐怕唯一更有效的方法是专门的处理器指令,就像x86上的bsr指令。一些编译器为这些指令提供了内置功能。例如,gcc为此提供了__builtin_clz

这篇关于如何有效地知道字符中第一个(左-右)位的位置的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆