Frozen X codE

The Stealth Coder Blog ^^

Menukar Nilai Dua Variabel Tanpa Variabel Ke-3

Demi Optimasi, kekekkekeke… Kalo biasanya kita nulis subtitusi variabel dengan variabel ke-3 kayak gini:


void swap(int a, int b)
{
    int temp;
    temp = a;
    a = b;
    b = temp;
}

Bisa kita sederhanakan jadi menggunakan dua variabel az, kayak gini:


void swap(int a, int b)
{
    a = a + b;
    b = a - b;
    a = a - b;
}

Dan berikut cara yang lebih teroptimasi, karen menggunakan operator xor terhadap bit:


void swap(int a, int b)
{
    a = a ^ b;
    b = a ^ b;
    a = a ^ b;
}

Gampang kan… v^^

Juli 12, 2008 - Ditulis oleh Frozen X | Programming, Teori | , , , , , , , , , | 7 Komentar

7 Komentar »

  1. mampush gue, gak ngerti abis ! :D

    frozen_x reply: *GUBRAG* masa sih, itu kan cuma tambah-tambahan. -.-a

    Komentar oleh warmorning | Juli 14, 2008

  2. XOR buat tambah-tambahan… kelihatannya memang bisa sih, tapi carry-nya gimana?

    a = 7 (0…0111)
    b = 2 (0…0010)

    a XOR b = (0…0101) = 5 ?

    tapi kalau dalam konteks penukaran bilangan sih memang mungkin, yah.

    a = 7 (0…0111)
    b = 2 (0…0010)

    a = a ^ b //a == (0…0101)
    b = a ^ b //b == (0…0111)
    a = a ^ b //a == (0…0010)

    memang sih, pada dasarnya selama nilai salah satu dari a (atau b) dipertahankan pada satu waktu, maka nilai yang lain bisa dikembalikan dengan sifat dari operator XOR…

    ~nice ;)
    ~lho kok jadi panjang ya? :roll:

    Frozen X: xor untuk tambah-tambahan? . . . belum tau bisa apa ga’. kekekekke…

    Komentar oleh yud1 | Juli 15, 2008

  3. xor untuk tambah-tambahan? . . . belum tau bisa apa ga’. kekekekke…

    lho, tadi bukannya…

    *GUBRAG* masa sih, itu kan cuma tambah-tambahan. -.-a

    AFAIK, memang nggak bisa sih. :mrgreen:

    Frozen X reply: gyahahaha… kalimat itu tuh maksudnya excluding yang xor. xixixixi…

    Komentar oleh yud1 | Juli 16, 2008

  4. saya mau pingsan saja deh *gak ngartiiii* :D

    Komentar oleh warmorning | Agustus 11, 2008

  5. –sensor–

    maaf, selain pemilik blog, dilarang promosi apalagi jualan di sini!

    Komentar oleh BigBaNG | Agustus 18, 2008

  6. owhh.. begitu yak @_@

    Komentar oleh ucrietz | September 22, 2008

  7. wah, suka coding jg yahh..

    salam kenal juga.. :D
    makasih dah singgah.. :)

    Komentar oleh m teguh satria | Oktober 11, 2008


Tinggalkan komentar