C# 从UInt64编号的startPos开始获取n位的有效性

C# 从UInt64编号的startPos开始获取n位的有效性,c#,.net,types,C#,.net,Types,从UInt64编号的startPos开始获取n位的有效性 我知道我们会一点一点地去做,但我想以更有效的方式去做 public static ulong GetBits(ulong value, int startPos) { int mask = 1 << startPos; ulong masked_n = value & (ulong)mask; ulong thebit = masked_n >>

从UInt64编号的startPos开始获取n位的有效性

我知道我们会一点一点地去做,但我想以更有效的方式去做

    public static ulong GetBits(ulong value, int startPos)
    {
        int mask = 1 << startPos;
        ulong masked_n = value & (ulong)mask;
        ulong thebit = masked_n >> startPos;
        return (ulong)thebit;
    }
公共静态ulong GetBits(ulong值,int startPos)
{
int mask=1>startPos;
返回(ulong)位;
}
//假设位数以0开头,并且
//startPos是所需的
//最低有效(最低编号)位
公共静态ulong GetBits(ulong值、int-startPos、int-bits)
{
ulong mask=((1UL startPos;
}
//假设位数以0开头,并且
//startPos是所需的
//最低有效(最低编号)位
公共静态ulong GetBits(ulong值、int-startPos、int-bits)
{
ulong mask=((1UL startPos;
}
//假设位数以0开头,并且
//startPos是所需的
//最低有效(最低编号)位
公共静态ulong GetBits(ulong值、int-startPos、int-bits)
{
ulong mask=((1UL startPos;
}
//假设位数以0开头,并且
//startPos是所需的
//最低有效(最低编号)位
公共静态ulong GetBits(ulong值、int-startPos、int-bits)
{
ulong mask=((1UL startPos;
}
好的-那么让我们假设(为了理智起见,让我们谈谈8位)您有:

10101010
您需要从第2位(n)开始的3(m)位。您需要这样一个掩码:

source:  10101010
mask:    00011100
&result: 00001000
那么,如何生成掩码呢?我们从1开始,按我们想要的位数(m)进行移位

所以我们几乎有了我们的面具,现在我们只需要通过移动2(n)来排列它

00000111好-那么让我们假设(为了理智起见,让我们谈谈8位)您有:

10101010
您需要从第2位(n)开始的3(m)位。您需要这样一个掩码:

source:  10101010
mask:    00011100
&result: 00001000
那么,如何生成掩码呢?我们从1开始,按我们想要的位数(m)进行移位

所以我们几乎有了我们的面具,现在我们只需要通过移动2(n)来排列它

00000111好-那么让我们假设(为了理智起见,让我们谈谈8位)您有:

10101010
您需要从第2位(n)开始的3(m)位。您需要这样一个掩码:

source:  10101010
mask:    00011100
&result: 00001000
那么,如何生成掩码呢?我们从1开始,按我们想要的位数(m)进行移位

所以我们几乎有了我们的面具,现在我们只需要通过移动2(n)来排列它

00000111好-那么让我们假设(为了理智起见,让我们谈谈8位)您有:

10101010
您需要从第2位(n)开始的3(m)位。您需要这样一个掩码:

source:  10101010
mask:    00011100
&result: 00001000
那么,如何生成掩码呢?我们从1开始,按我们想要的位数(m)进行移位

所以我们几乎有了我们的面具,现在我们只需要通过移动2(n)来排列它



00000111此问题可能更适合于您实际想要返回的内容?如果您的原始内容是,比如说,
100111001
,并且您想要从第2位开始的第3位,您希望如何返回?如
000011000
?此问题可能更适合于您实际想要返回的内容?如果您的原文是,比如说,
100111001
,您想要从第2位开始的第3位,您希望如何返回?正如
000011000
?这个问题可能更适合于您实际想要返回的内容?如果您的原文是,比如说,
100111001
,您想要从第2位开始的第3位,您希望如何返回hat返回?as
000011000
?这个问题可能更适合于您实际想要返回的内容?如果您的原始文件是,比如说,
100111001
,并且您想要从第2位开始的第3位,您希望如何返回?as
000011000
?我知道这不会是一个真正的改进,但是否有可能用
((1UL@JohnOdom当然,你可以这样做。不过这没有什么意义。它不会使代码更快或更小(编译时)是的,这就是为什么我说这不会是一个真正的改进:PI知道这不会是一个真正的改进,但是有可能用
((1UL@JohnOdom当然,你可以这样做。但是这真的没有意义。它不会使代码更快或更小(编译时)。你所要做的就是降低它的可读性。是的,这就是为什么我说这不会是一个真正的改进:PI知道这不会是一个真正的改进,但是有可能用
((( 1UL@JohnOdom当然,你可以这样做。不过这没有什么意义。它不会使代码更快或更小(编译时)是的,这就是为什么我说这不会是一个真正的改进:PI知道这不会是一个真正的改进,但是有可能用
((1UL@JohnOdom当然,你可以这样做。但是这真的没有意义。它不会使代码更快或更小(编译时)。你要做的就是降低可读性。是的,这就是为什么我说它不会有真正的改进:P