Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

355
Views
PHP voltear entero de 32 bits

obtener un entero sin signo de 32 bits. Voltee todos los bits (0->1 y 1->0) y devuelva el resultado como un número entero sin signo.

Tome 1, por ejemplo, como 32 bits sin signo es 0000000000000000000000000000000001 y al voltear obtenemos 111111111111111111111111111111110 que a su vez es 4294967294.

Puedo convertir un número decimal en binario, pero no contiene 32 bits para voltear. Por favor, ayúdame con esto.

over 4 years ago · Santiago Trujillo
3 answers
Answer question

0

Esto es en gran medida un problema básico de programación; y cualquier persona que publique código que utilice el manejo de cadenas no es alguien de quien quiera aprender.

Dicho esto, pack() es una excelente función; pero no ayuda a comprender exactamente lo que está sucediendo.

Para invertir un valor de 32 bits; pensemos en un int en PHP. En primer lugar, los int son de 64 bits; pero eso está bien; también podemos usar máscaras para asegurarnos de obtener la respuesta esperada (incluso si PHP cambia el ancho int predeterminado).

 $value = some_int_value; // the value to invert $value = !$value; // flip all 64 bits $value = $value & 0xffffffff; // ignore anything but the last 32 bits

O más sucintamente

 $invert_32_unsigned = 0xffffffff & !intval($value);
over 4 years ago · Santiago Trujillo Report

0

Lo hice gracias a todos. Así es como lo hice.

 $function flippingBits($n) { $binary = sprintf('%032b', $n); $fliped = strtr($binary, [1,0]); return bindec($fliped); }
over 4 years ago · Santiago Trujillo Report

0

Para PHP, puede usar decbin y bindec para decimal a binario y binario a decimal respectivamente, y usar una función simple para invertir los bits.

Hice una función xinvert para hacer el trabajo, de la siguiente manera:

 <?php $value1=10; echo xinvert($value1) ."<br>"; function xinvert($value1){ $string1= sprintf( "%032d",decbin($value1)); $index=0; $string2=""; while ($index < strlen($string1) ) { if (substr($string1, $index,1)=="0"){ $string2.="1"; }else{ $string2.="0"; } $index++; } return bindec($string2); } ?>

Nota: He usado sprintf( "%032d",decbin($value1)); para que tenga una longitud de 32 bits , que está inspirado en user3783243

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!