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

  • HER0R

    HER0R

    16 Aralık 2007
  • Machinima

    Machinima

    17 Ocak 2006
  • UrAvgConsumer

    UrAvgConsume

    1 Ocak 2012