PHP doğru kayması ve negatif sonuç?

1 Cevap php

Özellikle sağ-kaydırma operatörünün kullanımında, PHP bazı C kodu dönüştürme iken bir sorun haline çalıştırmak.

edit:, aşağıdaki örneklerde, = 0 bit;

Orijinal C kodu:

p->param->outBits[bytePtr++] |= codeword >> (9 + bit);

PHP kodu:

$outBits[$bytePtr++] |= $codeword >> (9 + $bit);

I codeword 130728 olmanın başlarsanız, CI -1 beklenen sonuç almak. PHP ben 255 olsun. Ben bu aritmetik / mantıksal vardiya farklılıkları ile ilgili bir şey olduğunu anlamak ve negatif işaret MSB'ler sıfır kaldıkları bir sonucu olarak ortaya konulmuş değil.

Vites içermeyen PHP yukarıdaki yapmanın bir "hızlı" bir yolu var mı? temel aritmetik veya benzeri yoluyla örneğin, o bana beklenen cevap verecek?

Teşekkürler :-)

1 Cevap

Senin sorunun PHP türü byte, (bu genellikle sadece 32 bit (8 değil) hangi integer var, yani gerçekten orada negatif bir değer gerekiyorsa sahip olmamasıdır bit imzasız 255 olarak imzalanan -1 aynı olduğu için), neyse doğru, o zaman muhtemelen eksik 24 yenilerini eklemek gerekir veya 254, yani böylece 256 -2 ve (255 -1 negatif değere geri aritmetiği kullanın - x =-x).