Número de coincidências binários em números binários de comprimento correção em python

votos
0

Então, o que eu preciso é uma função de python para contar o binário que são coincidentes em dois números escritos em binário, mas com um comprimento fixo, conhecido. Por exemplo, se n = 8é o comprimento binário, então:

a = 0011 0110
b = 0101 1111
--------------
c = 1001 0110 -> 4

Deve obter um resultado 4. cada 0em c é uma não coincidência e cada um 1significa coincidência. Como c tem 4 de alguém, então o resultado é 4.

Eu preciso que ele seja o mais rápido possível .

Publicado 20/10/2018 em 13:51
fonte usuário
Em outras línguas...                            


1 respostas

votos
1

Esta foi a minha solução final que eu acho que é bastante eficaz:

bin(a ^ b)[2:].zfill(n).count("0")

Explicação A lógica era usar xor para obter o número de coincidências. Com XOR, eu realmente obter o inverso do exemplo feito na questão, como uma coincidência significará um 0e um não coincidência vai significar uma 1. Então vou ter de negá-lo, mas antes que eu deveria fazer o número de ntamanho, porque a resposta é, na verdade, 110 1001e por isso vou obter uma resposta de 3 em vez de 4.

Respondeu 20/10/2018 em 13:51
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more