>

데이터 로그 입력 형식을 사용하여 Z3의 BitVec에서 1로 설정된 비트 수를 계산하는 간단한 방법이 있습니까?

$ z3 -h  # most of the lines below omited for clarity
Input format:
  -dl         use parser for Datalog input format.

이 질문에 대해 현재 허용되는 답변 : SMT 2 입력 형식을 사용하여 Z3의 BitVec에서 1을 계산 하면 SMT 2 입력 형식으로 수행 할 수있는 좋은 방법이 없음을 나타냅니다.

이 질문에 대해 현재 허용되는 답변 : Z3의 비트 벡터에있는 모든 비트의 합 은 Python에서이를 수행하는 방법을 보여줍니다.


  • 답변 # 1

    와이즈 비즈  벡터를 사용하면 다음 의사 코드를 SMT로 변환 할 수 있습니다.

    32 bit
    
    

    비트 트위들 링 해킹 (Bit Twiddling Hack)이라고하며 여기에도 게시되었습니다. v = v - ((v >> 1) & 0x55555555); // reuse input as temporary v = (v & 0x33333333) + ((v >> 2) & 0x33333333); // temp c = ((v + (v >> 4) & 0xF0F0F0F) * 0x1010101) >> 24; // count

  • 이전 Nodejs/Express를 사용하여 리디렉션을 수행 할 때 브라우저가 Authorization 헤더를 새 위치로 보내지 못하게하려면 어떻게해야합니까?
  • 다음 "javafx 응용 프로그램 스레드"스레드 예외 javalangruntimeexception : javalangreflectinvocationtargetexception