SORU
29 EKİM 2010, Cuma


~~ (&Quot;çift tilde") Javascript ne yapar?

Online oyun fizik bir kütüphane bugün bakıyordum ve ~~ operatörü ile karşı karşıya geldi. Tek bir ~ bir bit DEĞİL, biliyorum, bu bir DEĞİL ~~ bir olur tekrar aynı değeri verecek, değil mi?

CEVAP
29 EKİM 2010, Cuma


Bit düzeyinde operatörler örtülü olarak 32 bitlik imzalı tamsayı için ele alır dönüştürmek çünkü ondalık noktadan sonra her şeyi kaldırır. Bu işlenen (kayan nokta) sayı veya dize olup olmadığını çalışır, ve sonuç bir sayı.

Diğer bir deyişle, bunu verir:

function(x) {
  if(x < 0) return Math.ceil(x);
  else return Math.floor(x);
}

sadece eğerxarasında -(231ve 231- 1. Aksi takdirde, taşma ve sayısı ortaya çıkar "etrafında". sar

Bu olabilir olarak yararlı dönüştürme fonksiyonu dize bağımsız değişkeni bir sayı, ama her ikisi de, çünkü mümkün taşması ve yanlış kullanımı ile non-tamsayı olmaz kullan böyle hariç "code golf" (yaniamaçsızca programınızın kaynak kodunu kapalı bayt süsleme okunabilirlik ve sağlamlık pahasına). x Number(x) yerine kullanırdım.


Bu nasıl bir şey yapmadı

Numarasını -43.2, örneğin:

-43.210= 111111111111111111111111110101012

bir olarak imzalanmış (iki tamamlayıcı) 32-bit ikili sayı. (JavaScript ondalık noktadan sonra ne olduğunu göz ardı eder.) Biti verir eviren:

-4310= 000000000000000000000000001010102= 4210

Yine eviren verir:

DEĞİL 4210= 111111111111111111111111110101012= -4310

Bu negatif sayılar, sıfır, değil uzakta doğru yuvarlanır O Math.floor(-43.2) farklıdır. (-44, her zaman eşit olur zemin işlevi, bir alt tamsayıya, bu sayı pozitif ya da negatif olmasına bakılmaksızın tur.)

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • atKristaBradford

    atKristaBrad

    4 Aralık 2010
  • BigDawsTv

    BigDawsTv

    20 HAZİRAN 2012
  • Marina and The Diamonds

    Marina and T

    8 Temmuz 2008