programing

숫자에서 최하위 비트의 값을 얻으려면 어떻게 해야 합니까?

css3 2023. 10. 27. 22:05

숫자에서 최하위 비트의 값을 얻으려면 어떻게 해야 합니까?

저는 프로그래밍 프로젝트를 진행하고 있는데 가장 의미 없는 1비트의 값을 표시하는 마스크를 돌려주는 함수를 작성하는 것이 필요합니다.비트 와이즈 연산자를 사용하여 값을 결정하는 방법에 대한 아이디어가 있습니까?

ex: 
0000 0000 0000 0000 0000 0000 0110 0000 = 96
What can I do with the # 96 to turn it into:
0000 0000 0000 0000 0000 0000 0010 0000 = 32

저는 몇 시간 동안 벽에 머리를 부딪쳐 왔습니다. 어떤 도움이라도 주시면 대단히 감사하겠습니다!

x &= -x; /* clears all but the lowest bit of x */

올바른 비트/값을 얻으려면 다음과 같이 하십시오.

  • 최소 유의 비트 위치의 값 =x & 1
  • 고립된 최소 유의성 1의 값 =x & -x
  • 고립된 최소 유의성 1 =의 영-기반 지수log2(x & -x)

자바스크립트에서 보이는 모습은 다음과 같습니다.

let x = 0b1101000;

console.log(x & 1);            // 0 (the farthest-right bit)
console.log(x & -x);           // 8 (the farthest-right 1 by itself)
console.log(Math.log2(x & -x); // 3 (the zero-based index of the farthest-right 1)

보다 읽기 쉬운 코드:

int leastSignificantBit(int number)
{
    int index = 0;

    while ((~number) & 1) {
        number >>= 1;
        index++;
    }
    return 1 << index;
}

언급URL : https://stackoverflow.com/questions/18806481/how-can-i-get-the-value-of-the-least-significant-bit-in-a-number