숫자에서 최하위 비트의 값을 얻으려면 어떻게 해야 합니까?
저는 프로그래밍 프로젝트를 진행하고 있는데 가장 의미 없는 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
'programing' 카테고리의 다른 글
"림라프"가 무슨 뜻인지 아는 사람? (0) | 2023.10.27 |
---|---|
가장 유용한 사용자 제작 C마크로스(GCC에서도 C99)? (0) | 2023.10.27 |
백슬래시가 포함된 printf의 출력 이해 (\012) (0) | 2023.10.27 |
AngularJS+Jasmin: $httpBackend가 예상대로 작동하지 않습니다. (0) | 2023.10.27 |
Oracle에서는 테이블에 열을 "삽입"할 수 있습니까? (0) | 2023.10.27 |