GVKun编程网logo

在int中找到第n个SET位(找到int需要char)

23

本文将为您提供关于在int中找到第n个SET位的详细介绍,我们还将为您解释找到int需要char的相关知识,同时,我们还将为您提供关于AndroidStudio在signInReport中找不到第二个

本文将为您提供关于在int中找到第n个SET位的详细介绍,我们还将为您解释找到int需要char的相关知识,同时,我们还将为您提供关于AndroidStudio在signInReport中找不到第二个sha-1键、ASP.NET中继器模板,每第N个元素的条件代码、c – 将巴比伦平方根算法推广到第n个根、html – 选择一个类,其余的第3个;第n个孩子和第n个类型没用的实用信息。

本文目录一览:

在int中找到第n个SET位(找到int需要char)

在int中找到第n个SET位(找到int需要char)

我不仅要找到最低设置位,还想找到n第最低设置位的位置。(我 不是 在谈论n第th位的值)

例如,说我有:
0000 1101 1000 0100 1100 1000 1010 0000

我想找到设置的第4位。然后我要它返回:
0000 0000 0000 0000 0100 0000 0000 0000

如果为popcnt(v) < n,则返回此函数会很有意义0,但是这种情况下的任何行为对我来说都是可以接受的。

我正在寻找比循环更快的方法。

答案1

小编典典

事实证明,确实可以无循环执行此操作。预计算此问题的(至少)8位版本最快。当然,这些表会占用高速缓存空间,但是在几乎所有现代PC方案中,仍然应该有净加速。在此代码中,n
= 0返回最低设置位,n = 1倒数第二,以此类推。

__popcnt解决方案

有一个使用__popcnt内在函数的解决方案(您需要__popcnt才能非常快,否则通过简单循环解决方案获得的任何性能提升都是没有意义的。幸运的是,大多数SSE4
+时代的处理器都支持它)。

// lookup table for sub-problem: 8-bit vbyte PRECOMP[256][8] = { .... } // PRECOMP[v][n] for v < 256 and n < 8ulong nthSetBit(ulong v, ulong n) {    ulong p = __popcnt(v & 0xFFFF);    ulong shift = 0;    if (p <= n) {        v >>= 16;        shift += 16;        n -= p;    }    p = __popcnt(v & 0xFF);    if (p <= n) {        shift += 8;        v >>= 8;        n -= p;    }    if (n >= 8) return 0; // optional safety, in case n > # of set bits    return PRECOMP[v & 0xFF][n] << shift;}

这说明了分而治之方法是如何工作的。

通用解决方案

还有一种针对“通用”体系结构的解决方案-不使用__popcnt。可以通过处理8位块来完成。您还需要一个查找表来告诉您一个字节的popcnt:

byte PRECOMP[256][8] = { .... } // PRECOMP[v][n] for v<256 and n < 8byte POPCNT[256] = { ... } // POPCNT[v] is the number of set bits in v. (v < 256)ulong nthSetBit(ulong v, ulong n) {    ulong p = POPCNT[v & 0xFF];    ulong shift = 0;    if (p <= n) {        n -= p;        v >>= 8;        shift += 8;        p = POPCNT[v & 0xFF];        if (p <= n) {            n -= p;            shift += 8;            v >>= 8;            p = POPCNT[v & 0xFF];            if (p <= n) {                n -= p;                shift += 8;                v >>= 8;            }        }    }    if (n >= 8) return 0; // optional safety, in case n > # of set bits    return PRECOMP[v & 0xFF][n] << shift;}

当然,这可以通过循环来完成,但是展开形式更快,并且异常形式的循环会使编译器不太可能为您自动展开它。

AndroidStudio在signInReport中找不到第二个sha-1键

AndroidStudio在signInReport中找不到第二个sha-1键

选择相应项目并从 https://console.cloud.google.com/home

中选择 API & Services/Credentials 后,您应该能够在 Google Cloud Console 中找到 SHA 密钥

还提到的行 apply plugin: 'com.google.gms.google-services' 应该位于 build.gradle 文件(应用模块)中,而不是在项目的 build.gradle 文件中。如果你把它放在错误的文件中,只需将行移到后者即可。

ASP.NET中继器模板,每第N个元素的条件代码

ASP.NET中继器模板,每第N个元素的条件代码

我正在使用一个asp.net中继器来创建一堆图像.图像标记是一样的,因此标准< ItemTemplate>好的

但是,我想将K图像包裹在div中.让我说我绑定25图像到中继器,我想要5个图像每个div.如何有条件地创建div的开始和关闭标签?

这是一个更适合for循环的情况.

解决方法

这应该适用于你,不需要代码中的任何东西(除了绑定中继器..):
<asp:Repeater ID="repImages" runat="server">
<HeaderTemplate><div></HeaderTemplate>

<ItemTemplate>
<%# (Container.ItemIndex != 0 && Container.ItemIndex % 5 == 0) ? @"</div><div>" : string.Empty %>
<asp:Image ID="imggallery" runat="server" ImageUrl='<%# /* your code  here */ %>' />
</ItemTemplate>

<FooterTemplate></div></FooterTemplate>
</asp:Repeater>

c – 将巴比伦平方根算法推广到第n个根

c – 将巴比伦平方根算法推广到第n个根

我一直在寻找根算法,并遇到了巴比伦算法.我非常喜欢它,因为它简单易懂.但问题是它只需要平方根,当我正在创建一个能够以任何权力取得数字根的函数时.我只是尝试采取正整数.

这是功能:

double functions::rot(double x,double y) {
    double z = x;
    double w = 1;
    double e = 0.000001; 
    while (z - w > e){
        z = (z + w) / 2;
        w = x / z;
    }
    return z;
}

y就是力量.有没有人有办法改变这个算法,所以y是根的力量?例如,如果y = 3,则采用立方根.

解决方法

将w = x / z更改为w = x / z * z的注释仅为1/3(双关语意)正确.您还需要另外两个更改,我认为这些更改在此Python代码中很明显:

def rot(x,y): # 
    z = x
    w = 1
    e = 0.000001
    while (z - w > e):
        z = ((y - 1) * z + w) / y
        w = x / (z ** (y - 1)) # a ** b is a to the power of b in Python
                               # you might want to use modular exponentiation in C++
                               # (or not if y is double...)
    return z


print(rot(64,3)) # prints 4
print(rot(59,6)) # prints 1.9730678338673044

请参阅此处获取reference.我建议您阅读它,因为它提供了更深入的解释.

html – 选择一个类,其余的第3个;第n个孩子和第n个类型没用

html – 选择一个类,其余的第3个;第n个孩子和第n个类型没用

我有一个DOM元素(#installations)与一些孩子,只有其中一个有一个类.selected.我需要选择这个类和其余的第3个(:not(.selected))并显示它们 – 目标是只显示4个元素,而不管哪个元素具有类.selected.

问题是,在表达式中:

#installations > *:not(.selected):nth-of-type(-n+3),.selected

:nth-​​of-type()忽略:not()选择器,只选择#installation的前3个子对象.例如,如果我有这个HTML:

<div id="installations">
    <div id="one"/>
    <div id="two"/>
    <div id="three"/>
    <div id="four"/>
    <div id="five"/>
</div>

我只会有一个,两个,三个选择,而不是前四个.逻辑含义是:nth-​​type()将只有(1,2,4,5)才能选择,因为:not()已经排除了所选择的一个,因此选择(一,二,四)然后选择器的另一部分.selected将添加所选元素.

如果选择的不是前四个要素,那就说这是第六个,我们将选出前三个第六个元素.

澄清:选择.selected加3个相邻元素也很好.但是,我也很困难,如果选择在最后3个(如果我们选择接下来的3个相邻元素)

解决方法

正如我的评论中所提到的,伪类没有被顺序处理;它们都是对每一个元素进行评估的.详见 this answer.

经过一点修补,给出你的HTML和选择元素的条件,我想出了以下很长的选择器列表:

/* The first three children will always be selected at minimum */
#installations > div:nth-child(-n+3),/* Select .selected if it's not among the first three children */
#installations > div.selected,/* If .selected is among the first three children,select the fourth */
#installations > div.selected:nth-child(-n+3) ~ div:nth-child(4)

为了使其工作,必须做一个简单的假设:所选类只能一次出现在一个元素上.

您需要在同一条规则中组合所有三个选择器,才能匹配您要查找的四个元素.注意我的代码中的逗号.

Interactive jsFiddle demo(用于测试不同子元素中的类的选择器)

对于什么是值得的,如果你可以回到JavaScript,这更容易.举个例子,如果你使用jQuery,它的:lt() selector使事情变得更简单一些:

// Apply styles using this selector instead: #installations > div.with-jquery
$('#installations')
    .children('div.selected,div:not(.selected):lt(3)')
    .addClass('with-jquery');

Interactive jsFiddle demo(忽略这个演示中的JS代码,只是让它进行交互)

关于在int中找到第n个SET位找到int需要char的问题我们已经讲解完毕,感谢您的阅读,如果还想了解更多关于AndroidStudio在signInReport中找不到第二个sha-1键、ASP.NET中继器模板,每第N个元素的条件代码、c – 将巴比伦平方根算法推广到第n个根、html – 选择一个类,其余的第3个;第n个孩子和第n个类型没用等相关内容,可以在本站寻找。

本文标签: