«bit-manipulation» 태그된 질문

개별 비트 조작. 사용되는 연산자에는 비트 AND, OR, XOR, NOT, 왼쪽 시프트 및 오른쪽 시프트가 포함될 수 있습니다.

16
C ++의 순환 이동 (회전) 작업에 대한 모범 사례
왼쪽 및 오른쪽 시프트 연산자 (<< 및 >>)는 이미 C ++에서 사용할 수 있습니다. 그러나 원형 이동이나 회전 작업을 수행하는 방법을 찾을 수 없었습니다. "왼쪽으로 회전"및 "오른쪽으로 회전"과 같은 작업을 어떻게 수행 할 수 있습니까? 여기에서 오른쪽으로 두 번 회전 Initial --> 1000 0011 0100 0010 결과는 다음과 같습니다. Final …

1
우선 순위 및 비트 마스크 작업
나는 (겉보기에) 매우 이상한 사건을 만났습니다. 숫자 2 ( 0b10)를 가져 와서 1 ( 0b01)로 비트 마스킹합니다. 이것은 0b000에 해당하는 것을 생성해야합니다 . 그러나 Schrödinger가 등장하는 곳은 다음과 같습니다. var_dump(0b10 & 0b01); // int(0) var_dump(0b10 & 0b01 == 0); // int(0) var_dump(0b10 & 0b01 != 0); // int(0) 위스키. 탱고. …

17
C ++에서 숫자가 2의 거듭 제곱인지 테스트하는 가장 간단한 방법은 무엇입니까?
다음과 같은 기능이 필요합니다. // return true iff 'n' is a power of 2, e.g. // is_power_of_2(16) => true is_power_of_2(3) => false bool is_power_of_2(int n); 누구든지 내가 이것을 어떻게 쓸 수 있는지 제안 할 수 있습니까? 이런 종류의 알고리즘을 찾을 수있는 좋은 웹 사이트를 알려주시겠습니까?

3
CHAR_BIT는 무엇입니까?
http://graphics.stanford.edu/~seander/bithacks.html 에서 분기하지 않고 정수 절대 값 (abs)을 계산하는 코드를 인용합니다 . int v; // we want to find the absolute value of v unsigned int r; // the result goes here int const mask = v >> sizeof(int) * CHAR_BIT - 1; r = (v + mask) ^ mask; …

7
C / C ++ : 강제 비트 필드 순서 및 정렬
구조체 내 비트 필드의 순서는 플랫폼에 따라 다릅니다. 다른 컴파일러 별 패킹 옵션을 사용하면 데이터가 기록 될 때 적절한 순서로 저장된다는 보장이 있습니까? 예를 들면 : struct Message { unsigned int version : 3; unsigned int type : 1; unsigned int id : 5; unsigned int data : 6; } …


10
정수의 1 비트가 연속 영역에 있는지 테스트하는 우아하고 빠른 방법이 있습니까?
비트 값이 1 인 위치 (32 비트 정수의 경우 0에서 31까지)가 연속 영역을 형성하는지 테스트해야합니다. 예를 들면 : 00111111000000000000000000000000 is contiguous 00111111000000000000000011000000 is not contiguous 이 테스트, 즉 일부 기능 has_contiguous_one_bits(int)이 이식 가능하기를 바랍니다. 한 가지 분명한 방법은 위치를 반복하여 첫 번째 설정 비트를 찾은 다음 첫 번째 설정되지 않은 …




3
'마스킹 된'비트 세트 증가
나는 현재 다음과 같은 문제가 발생한 트리 열거자를 작성하는 중입니다. 설정 비트 즉, 마스크의 하위 집합 어디 마스크 bitsets, 즉 bitsets 찾고 있어요 0000101마스크 1010101. 내가 달성하고 싶은 것은 bitset을 증가시키는 것이지만 마스크 된 비트에 대해서만 가능합니다. 이 예에서 결과는입니다 0010000. 좀 더 명확하게하려면 마스킹 된 비트 만 추출합니다. 즉 …

5
Java / Android color int의 알파 바이트 조작
Android 색상 (캔버스에 그리기 위해)으로 사용중인 Java에 int가있는 경우 해당 int의 알파 구성 요소 만 어떻게 조작합니까? 예를 들어이 작업을 수행하려면 어떻게해야합니까? int myOpaqueColor = 0xFFFFFF; float factor = 0; int myTransparentColor = operationThatChangesAlphaBytes(myOpaqueColor, factor); //myTransparentColor should now = 0x00FFFFFF; 이상적으로 factor는 바이트를 정적 인 값으로 설정하는 것보다 첫 번째 …

7
큰 집합에서 해밍 거리가 낮은 이진 문자열을 효율적으로 찾습니다.
문제: 부호없는 32 비트 정수의 큰 (~ 1 억) 목록, 부호없는 32 비트 정수 입력 값 및 최대 Hamming Distance가 주어지면 입력 값 의 지정된 Hamming Distance 내에있는 모든 목록 멤버를 반환합니다. 목록을 보관할 실제 데이터 구조는 공개되어 있고 성능 요구 사항은 인 메모리 솔루션을 요구하며 데이터 구조를 구축하는 데 …

20
if-else 또는 다른 비교 연산자를 사용하지 않고 최대 2 개의 정수를 찾는이 스 니펫을 설명 하시겠습니까?
최대 두 개의 숫자를 찾으십시오. if-else 또는 다른 비교 연산자를 사용하면 안됩니다. 온라인 게시판에서이 질문을 찾았으므로 StackOverflow에서 질문해야한다고 생각했습니다. 예제 입력 : 5, 10 출력 : 10 이 솔루션을 찾았습니다. 누군가이 코드 줄을 이해하도록 도울 수 있습니까? int getMax(int a, int b) { int c = a - b; int …

8
하드웨어 SIMD를 사용하지 않고 병렬로 1에서 병렬로 64 비트 정수에서 팩형 8 비트 정수 빼기 1 SWAR
64 비트 정수가있는 경우 8 개의 요소가있는 압축 된 8 비트 정수의 배열로 해석됩니다. 1한 요소의 결과가 다른 요소의 결과에 영향을 미치지 않고 오버플로를 처리하는 동안 각 팩형 정수에서 상수를 빼야합니다 . 나는이 코드를 가지고 있으며 작동하지만 각각의 8 비트 정수를 병렬로 빼고 메모리에 액세스하지 않는 솔루션이 필요합니다. x86에서는 psubb8 …
77 c++  c  bit-manipulation  simd  swar 

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.