SORU
2 Ocak 2010, CUMARTESİ


^ Operatörü Java ne yapar?

Ne işlevi "" operatör Java hizmet? ^ mu

Bu deneyin:

int a = 5^n;

...bana verir:

n = 5, 0 değerini döndürür
n = 4, 1 döndürür
n = 6, 3 döndürür

...üs olduğunu göstermez sanırım. Ama o zaman nedir?

CEVAP
20 NİSAN 2010, Salı


Java ^ operatör

Java 6 ** özel-veya ("") xor operatörü.

Hadi örnek olarak 5^6:

(decimal)    (binary)
     5     =  101
     6     =  110
------------------ xor
     3     =  011

Bit için doğruluk tablosu (JLS 15.22.1) ve mantıksal (JLS 15.22.2) Bu xor:

^ | 0 1      ^ | F T
-- -----     -- -----
0 | 0 1      F | F T
1 | 1 0      T | T F

Daha basit, ayrıca "bu . xor olarak düşünebilirsiniz ^em>yaamaikisi de değil".!

Ayrıca Bkz


Java'da üs

Tamsayı için üs olarak, ne yazık ki Java böyle bir operatör yok. double Math.pow(double, double) (gerekirse int sonuç döküm) kullanabilirsiniz.

Ayrıca geleneksel bit Kaydırma Numara iki bazı güçler hesaplamak için kullanabilirsiniz. Bu iki o (1L << k)kk=0..63- inci güç.

Ayrıca Bkz


Not birleştirmebu cevap birleştirilmiş başka bir soru nereye niyeti kullanmak üs dönüştürmek dize "8675309" int kullanmadan Integer.parseInt gibi bir programlama egzersiz (^ gösterir beyan etme artık). OP niyeti 8*10^6 6*10^5 7*10^4 5*10^3 3*10^2 0*10^1 9*10^0 = 8675309; bu cevap bir sonraki bölümü üs bu görev için gerekli olmadığını adreslerini hesaplamak için.

Horner şeması

Derdinizözelgerek, aslında 10 çeşitli güçler hesaplamak için gerek yok. Bu denilen şey kullanabilirsiniz, ama aynı zamanda en basit ve etkin olmayan Horner's scheme,.

Kişisel bir egzersiz olarak bu yaptığın bu yana, Java kod vermem, ama burada ana fikir:

8675309 = 8*10^6   6*10^5   7*10^4   5*10^3   3*10^2   0*10^1   9*10^0
        = (((((8*10   6)*10   7)*10   5)*10   3)*10   0)*10   9

İlk başta karmaşık görünebilir, ama gerçekten değil. Temelde basamak sağdan sola doğru okunur ve neden şimdiye kadar bir sonraki basamak eklemeden önce 10 ile çarpın.

Tablo şekli:

step   result  digit  result*10 digit
   1   init=0      8                8
   2        8      6               86
   3       86      7              867
   4      867      5             8675
   5     8675      3            86753
   6    86753      0           867530
   7   867530      9          8675309=final

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • MysteryGuitarMan

    MysteryGuita

    16 HAZİRAN 2006
  • newreleaseblitz

    newreleasebl

    13 Ocak 2010
  • Stanislav Petrov

    Stanislav Pe

    7 ŞUBAT 2009