Wednesday, November 23, 2016

Dynamic Programming (lanjutan) & Greedy

Dynamic Programming (lanjutan)
-> Knapsack 0/1
    cth:
    i   =  1     2     3     4
    w =  2     1     3     2
    p  = 12   10   20   15
   M = 5

    keterangan:
    i = item
    w = weight tiap item
    p = profit tiap item
    M = max weight yang bisa dibawa

    output: buat tabel, nilai tabel selanjutnya ditentukan dari nilai tabel sebelumnya


Greedy
1. Minimum Spanning Tree
    Spanning tree: graph yg ga ada cycle

   1. Algo. Prim
      -> selalu nyambung, mulai dari node yang cost nya terkecil, lalu lanjut ke node lain yang jaraknya terkecil dari node sebelumnya

   2. Algo. Kruskal
      -> urutin dari yang jaraknya terkecil, jangan ambil yang menyebabkan cycle

2. SSSP (Single Source Shortest Path) -> coming soon or coming never, lol

3. Huffman Code
    -> merepresentasi karakter dengan variable length
    -> representasi karakter yg populer digunakan: ASCII & EBDIC, merupakan representasi dgn fixed length
    -> Aturan:
        1. Makin sering huruf tsb muncul, makin pendek representasinya -> cth: A bnyk dipake, shg A direpresentasikan sbg 0
        2. tidak boleh 1 karakter merupakan awalan dari karakter lain -> cth: A = 0 ; B tdk boleh 01 (karena 0 merupakan A)

    -> Contoh membuat representasi berdasarkan aturan berikut:
        A > B > C > D
        Langkah:
        1. ambil 2 huruf terkecil dulu yaitu {C, D}, bedakan dengan 0 & 1
        2. gabungkan dgn huruf selanjutnya {B, C, D}, bedakan dgn 0 & 1, dan seterusnya

        Dlm bentuk Tree:
     
 
Sehingga
A = 0
B = 10
C = 110
D = 111

3. Knapsack Fractional -> barang bs dibagi
    Ada 3 macam greedy:
    1. Greedy Weight
    2. Greedy Profit
    3. Greedy Ratio (Profit / Weight) <-- optimal="" p="" selalu="">

    Penjelasan:
    1. Greedy weight: mengurutkan item yg dimasukkan duluan berdasarkan weight item tsb
        logikanya yang weight paling kecil yang dimasukin duluan

    2. Greedy Profit: mengurutkan item yg dimasukkan berdasarkan profit. logikanya yg profit terbesar yg dimasukkan duluan

    3. Greedy Ratio: mengurutkan item yg dimasukkan duluan berdasarkan rasio dari barang tsb (rasio dapet dari profit / weight) 

Week 11

Attack:
   1. Cloned RFID
       -> data numpang lewat doang ke komp org lain, tp data tsb dipake sm org lain tsb (disebut jg immigrant attack)
       -> perbedaan dgn:
           wire taping => wire taping cuma nyadap, sekedar tau data doang (cukstaw lol)
           MITM => datanya diubah sblm dikirim ke org lain, bkn cm sekedar dipake

Vulnerability:
1. Replay Attack
    -> gaperlu tau isi dari data, tp data tsb dpt dipake utk dikirim ke tmpt lain utk mendpt credential org itu

2. Reprocessed Transactions
    -> cth: org masukin username sm password, nah uname dan password itu diambil packetnya dan dipake buat login lg -> password replay
    -> cth2: biometric authentication -> cth bikin replika sidik jari pake karet -> physical replay

3. Reuse of Session Data

Countermeasure
1. Unrepeatable Protocol
    -> cth pake one time password

2. Liveness beacon
    -> cth: sequence number, nonce (memberi simple modification utk memastikan org yg sdg berkomunikasi ikut terlibat)

Similar Attack: Session Hijacking
langkah" session hijacking:
1. IP Spoofing -> ganti" header IP suatu packet agar source jadi dari si attacker
2. Tebak sequence Number (kadang bisa di predict)
3. Data dari attacker hrs sampe duluan ke destination sblm data dr sender aslinya

Monday, November 21, 2016

Dynamic Programming

1. Fibonacci (coming soon!)

2. Koefisien Binomial
    C(n, k) = C(n-1, k-1) + C(n-1, k) dimana n > k > 0

3. Coin Change (coming soon or coming never.. idk)

4. Binary Search Tree yang optimal
cth:
A = 0,1
B = 0,2
C = 0,4
D = 0,3

Subproblem {1,2} -> dlm hal ini A=1, B=2, dst, nilai ini merupakan nilai k
A -> B
Cost: 1 * 0,1 + 2 * 0,2 = 0,3

B -> A
Cost: 1* 0,2 + 2 * 0,1 = 0,4

pilih yg cost terkecil, maka arah dari A -> B

Subproblem {3,4}
C -> D
Cost: 1 * 0,4 + 2 * 0,3 = 1,0

D -> C
Cost: 1 * 0,3 + 2 * 0,4 = 1,1

nilai k yang dimaksud diatas berguna untuk menentukan yang mana yang jadi root dari tree tersebut. misalkan k = 1, berarti rootnya adalah A
jadi susunannya: A -> B -> C -> D
(anggap ini dlm bentuk tree, penyusunan berdasarkan abjad. kalau abjad yang ingin dimasukkan ke tree lebih besar dari root nya (misal B adalah huruf yg lebih besar dari A, F adalah huruf yang lebih besar dari C, dsb) maka menjadi cabang tree di sebelah kanan root, dan sebaliknya jika lebih kecil maka menjadi cabang tree sebelah kiri.)

jadi dari aturan diatas, k = 2 dapat dituliskan sbb:
              B
           /      \
         A       C
                     \
                     D

Insert, Update, Delete, Commit, Rollback, Truncate (Database)

DML:
1. Insert new Row
    insert data bisa secara implisit dan eksplisit
    implisit -> nama kolom disebutin
    INSERT INTO TableSomething (ColA, ColB) VALUES(1, 2);

    eksplisit ga sebutin nama kolom
    INSERT INTO TbSomething VALUES (1, 2, NULL);

    Insert data bisa dari table lain:
    INSERT INTO TbA (SELECT x FROM tableY WHERE ID > 1);

2. Update data
    UPDATE tableName SET colName = value WHERE condition
    bisa dimasukin subquery juga loh~
    UPDATE tbName SET colName = (SELECT x FROM tbY where condition);

3. Delete data
    DELETE FROM tbName WHERE condition;

DCL:
1. Truncate data -> sm kyk delete, tp dia autocommit
    TRUNCATE TABLE tbA;

Database Transaction
- COMMIT
- ROLLBACK

FOR UPDATE -> dimasukin di query select, fungsinya agar user lain gabisa edit data yg lg di select sm 1 user

Tuesday, November 15, 2016

Analisis dan Perancangan Algoritma - Space and Time Tradeoff

String Matching:
1. Algo. Horspool
   Kasus 1 dan 2: gada string yg berulang di depan
   Kasus 3 dan 4: ada yang berulang

               B   A   R   B   E   R
                    4    3    2    1    0
   (penomoran dari huruf paling akhir ke awal)

   Shift Tabel T (berupa array) => index nya sesuai ascii
   contoh ascii A = 65 -> T[65] = 4

2. Algo. Boyer-Moore
   Ada 2 tabel, yaitu
   -> Shift Tabel T
   -> Suffix Table utk hitung d2

   k = banyaknya variabel yang sama
   k = 0 -> Boyer-Moore = Horspool

   utk mencari d1
   -> Bad-Character (bc) = karakter setelah string yang sama
        d1 = max(T[bc] - k, 1)

   untuk mencari d2
   -> Good Suffix
        a. Aturan lama (masih bisa keliru)
        d2 = jarak antar karakter yang karakter sebelumnya berbeda
        contoh: A B  C  B   A   B
                            (3) (2) (1) (0)
        diliat dari karakter paling kanan (B) (nomor 0), karakter sebelumnya A (nomor 1)
        lalu sebelum A = karakter B (nomor 2) (sama seperti karakter paling kanan yaitu B), sehingga dilihat, jika karakter sebelumnya = A (karakter di nomor 3 = karakter di nomor 1), maka karakter di nomor 3 bukan merupakan good suffix, dan lihat lagi karakter sebelumnya.
        Namun, karena pada contoh, C != A (karakter di nomor 3 != karakter di nomor 1), sehingga C merupakan good suffix dan dihitung jarak dari B (nomor 0) ke B (nomor 2). jarak = 2 -> d2 = 2
        Kalau tdk ditemukan good suffix sampai huruf paling awal dari string, maka d2 = jumlah karakter di string tersebut

        b. Aturan Baru
            //coming soon! kalo ga lupa

Sorting By Counting
contoh:
idx array = [0] [1] [2] [3] [4]
       data  =  9    8  11  10  12

Tabel Frekuensi
idx array = menyesuaikan data
... [8]  [9]  [10]  [11]  [12]
     1     1     1       1       1  
<- array="" dalam="" data="" jumlah="" p="">
Tabel Distribusi = menyimpan posisi awal data hrs dimasukkan

... [8]     [9]          [10]         [11]        [12]
     1        1             1              1             1  
      |         |              |               |              |
     v        v             v              v             v
     1   (1+1=2)   (2+1=3)   (3+1=4)   (4+1 = 5)  
<- array="" dalam="" data="" jumlah="" p=""><-isi dist.="" p="" tb.="">
<- array="" dalam="" data="" jumlah="" p=""><-isi dist.="" p="" tb.="">karena array dimulai dari index 0, maka nilai di tabel distribusi dikurang dgn 1
sehingga isi dr tabel distribusi:
[0]  [1]  [2]  [3]  [4]
 0     1    2     3     4

Computer Security - Not All is What It Seems (Week 10)

Harm:
   Forgeries (pemalsuan)
   -> Fake Email
   -> Fake Website
   -> Fake Code, cth pdf reader fake, antivirus fake
 
Vulnerability:
 -) Integrity Failure
   Attack Details:
   1. Website Defacement: mengubah konten sebuah web
   2. Subtitute Content of Real Website: ubah sbagian kcl dr web, tujuan agar user ga aware
   3. Fake Email Message: tujuan utk phising -> memancing org utk memberikan private data
   4. Fake/Inaccurate Email Header Data: email from siapa bs diedit
   5. Web Bug: adalah sbuah invisible image (1 * 1 pixel image), utk memberikan data yg diinginkan
   6. Clickjacking: bikin user agree tanpa sadar
   7. SQL injection: mengubah statement agar menjalankan yg user inginkan

Countermeasure:
   Digital Signature
   -> Properties of Digital Signature:
   1. Nonrepudiation
   2. Authenticity
   3. Must be unforgeable, not alterable, not reusable.

   *) Encryption vs Hash
   Hash:
   - one way function
   - tujuan: biar bs tau data diubah" atau ngga
   Encryption:
   - two way function (encrypt -> decrypt / decrypt -> encrypt)
   - tujuan: biar message ga langsung bs dibaca sama org

Thursday, June 09, 2016

Kapita Selekta - Mobile Commerce & UI / UX

1. Mobile Commerce
    -> manusia lebih bergantung pada mobile / smartphone
    -> harga smartphone yang menurun
    -> penggunaan mobile meluas di negara berkembang seperti Indonesia




    -> Hal yang menjadi perhatian:
    1. Screen yang terbatas (ukuran kecil) 
        -> Resolution increase rate +++
        -> physical form factor increase rate + 
        -> Multi page information presentation
    2. Interuptible -> Calls, Notifications
    3. Limited screen time/session -> Important info only

2. UI / UX
-> User Interface (UI) : The means used by user to interact with; Visual components, information presentation, layouts, colors, typeface
-> User Experience (UX) : The comprehensive experience or impression of using the product; Scenarios, flows, usability 

-> Prinsip Design:
    1. Konsistensi
    2. Navigasi penuh untuk user
    3. Feedback (Progress, Konfirmasi, Informasi)
    4. Transisi

Kapita Selekta - Finance Management

Time Value of Money


𝐹𝑣 = 𝑃𝑣 (1 + 𝑖)𝑛

𝐹𝑣 = Future value
𝑃𝑣 = Present value
𝑖 = interest rate
𝑛 = time span

Contoh Soal:
If we have $100 now in savings account that pays 7% interest compounded annually. How much the value of our savings in next 2 years?

Fv = 100(1+0.07)^2
    = $114.49

What is the present value of $1000 received in 2021? Given the interest rate is 7%

n = 2021 - 2016 = 5
1000 = Pv (1+0.07)^5
Pv = 1000/1.4 = $714.28


Break Even Analysis:
Break Even Point

point dimana total cost = total revenue

rumus:
𝑇𝑅 = 𝑇𝐶 
𝑃 × 𝑋 = 𝑇𝐹𝐶 + 𝑉 × 𝑋 
𝑃 × 𝑋 − 𝑉 × 𝑋 = 𝑇𝐹𝐶
𝑋 = 𝑇𝐹𝐶 /(𝑃 − 𝑉)

Dimana:
TR = Total Revenue
TC = Total Cost
P = unit Price  
V = Variable cost 
TFC = Total Fixed Cost
X = Break Even Point

For example, if it costs $25 to produce a chair, and there are fixed costs of $1,000, the breakeven point for selling the widgets would be:

If selling for $100: 14 chairs (Calculated as 1000/(100-25)=13.333)

If selling for $200: 6 chairs (Calculated as 1000/(200-25)=5.714)


Payback Period
Waktu yang dibutuhkan untuk mengembalikan uang investasi

PP = Initial Cost / Annual Cash-in Flow

CONTOH:

Cost Benefit Analysis

Method of comparing the estimated total benefit to the estimated total investment (cost) required.
All value should be in net present value.

ROI Analysis

-> Digunakan untuk mengetahui efisiensi investment atau membandingkan dengan investasi lainnya

Rumus:
𝑅𝑂𝐼 = (𝐺𝑎𝑖𝑛−𝐼𝑛𝑣𝑒𝑠𝑡𝑚𝑒𝑛𝑡) / 𝐼𝑛𝑣𝑒𝑠𝑡𝑚𝑒𝑛𝑡  

Contoh:
1. Let’s say we invest $1000 in a business that returns $1200 a year later. 
-> The ROI would be ($1200-$1000)/$1000 = $200/$1000 = 20%

2. In 2015, we invest $1500 to start a business. By 2020, we sold the share for $3000. 
-> The ROI would be 100%

Which investment is more profitable? Why?
Jawab: sebenarnya nilai kedua kasus diatas sama, tapi yang lebih profitable adalah kasus pertama karena langsung mendapat keuntungan di tahun pertama, sedangkan kasus kedua mendapat keuntungan dalam kurun waktu 5 tahun.

Hope this helps!
Referensi: materi Kapita Selekta Week 8 Universitas Multimedia Nusantara

Tuesday, June 07, 2016

Jaringan Komputer - IP Security

ESP


yg tercapture di wireshark adalah protokol ESP
ESP dipakai untuk sambungan vpn point-to-point

TLS dan SSL

TLS: yang diganti IP Source dan Dest nya
SSL: yang diganti Destinasi TCP nya
         Port number HTTP: 80
         HTTP + SSL: HTTPS, port number: 443

Sekian~ (catetan gw cuma ada ini ttg ESP, TLS dan SSL ^^") 

Jaringan Komputer - Symmetric dan Asymmetric Key Cryptography

Ket:
Dp = plain text
Dc = Cipher Text

Bagaimana caranya A bs mengirim info ke B tanpa diketahui C (MITM)?
1. Konseptual (lama) = dd
    private dedicated link / connection A - B 
2. Key Exchange Algorithm
    A memberikan key ke B dan disadap C, tapi hanya B yang bs olah pesan dgn key yg diberikan
    2 cara: symmetric (Deffie-Hellman algo) dan asymmetric (RSA Algo)

   1. Symmetric
      1. PC A construct algo dengan rumus sbb:

           contoh: 2^x mod 5 = y

      2. Rumus dikirim ke B dan disadap juga oleh C
      3. x adalah secret number yang dimiliki masing" PC
          Contoh: Xa = 6, Xb = 7

Rumus 2^x mod 5 = 4 nantinya akan dikirim PC A ke PC B dan disadap oleh C


Rumus 2^x mod 5 = 3 nantinya akan dikirim PC B ke PC A dan disadap oleh C

(di PC A, hasil 3^6 mod 5 = 4)

(di PC B, hasil 4^7 mod 5 = 4)

Hasil perhitungan harus sama. Dalam hal ini, nilainya sama yaitu 4.


    2. Asymmetric

langkah":
1. PC A (yang mengirim data) request public key ke penerima data (PC B)
2. Hitung e dan n (public key B) dari nilai p dan q yang dimiliki PC B.
3. Public key dikirim ke PC A
4. A memasukkan rumus encrypt
     

5. Dc = 31 dikirim dari A ke B dan disadap C
6. PC B melakukan decrypt dengan private key (d, n)
    nilai d tdk pernah dikomunikasikan ke manapun

Sekian mengenai Cryptography!

Jaringan Komputer - Software Queuing

Ada 3 macam Queuing Algo:
1. FIFO Queuing (FIFO)
2. Priority Queuing (PQ)
3. Weighted Fair Queuing (WFQ)

1. FIFO: protokol masuk ke hardware queuing berdasarkan timing

2. Priority Queuing (PQ): ada 4 jalur antrian yang fixed, yaitu
    High
    Medium
    Normal
    Low

    protokol masuk ke hardware queuing berdasarkan prioritasnya dari high -> medium -> normal -> low

3. Weighted Fair Queuing (WFQ) -> dynamic
     -> Flow based: banyaknya jalur tergantung dari banyaknya source (flow)
     -> Class based: tergantung dari banyaknya class
   
    (yang kita pelajari adalah flow based)
    Flow Based WFQ
    -> utk masuk ke hardware queuing, per packet diitung nilai seq. number nya.
    -> seq. number dihitung berdasarkan:
         1. packet length
         2. IP precedence -> size 3 bit. IP precedence dilihat dari header IP, di bagian DSCP (Differentiated Service Field), 3 bit pertamanya. Default = 0. Biasa dlm 1 flow  nilai IP precedence nya sama.

Sekian mengenai Software Queuing :)

Jaringan Komputer - RTP dan SIP

> Digunakan pada saat menelepon
RTP                           SIP     
UDP                          UDP
IP                               IP
MAC                         MAC


Data yang disimpan:
Jika terjadi call yang berbeda call managernya, maka call manager source akan broadcast protokol SIP ke Call Manager lainnya, jika Call Manager lainnya mengetahui info destinasi, maka akan diberikan info tersebut ke call manager dari source (yang melakukan broadcast)

Sekian materi RTP dan SIP :D

Monday, June 06, 2016

Jaringan Komputer - Wired dan Wireless

Wired:
1. Thick Ethernet
2. Thin Ethernet

1. Thick Ethernet

PC terkoneksi dengan kabel backbone melalui vampire

2. Thin Ethernet
PC terkoneksi langsung dengan kabel backbone
Jika terjadi collision pada saat pengiriman data, maka akan terdeteksi dengan melihat watt listriknya.

Wireless
    -> pake frekuensi yang sama
    -> ga bisa detect collision 

Algoritma yang mengatur wired dan wireless agar koneksi dapat berjalan dengan lancar:
- Wired: CSMA / CD -> Collision Detection
- Wireless: CSMA / CA -> Collision Avoidance

Wired: Collision Detection
Case #1 : sebelum mengirim data di sense dulu, jika free maka data langsung dikirim

Case #2 : jika saat sense jalur sedang dipakai (busy), maka ia akan generate timer secara otomatis. Selama menunggu timer, sense tidak dijalankan.

Case #3: saat ada 2 PC sense bahwa jalur free dan sama" mengirim data dan terjadi collision, maka masing" akan generate timer berbeda dan timer yang lebih cepat akan mengirim data terlebih dahulu, sedangkan yang lainnya sense jalur busy dan pasang timer kembali.

Wireless
Case #1: dia akan sense terus-menerus, jika sense free maka dia akan generate timer untuk memastikan bahwa sense selanjutnya tetap free. Jika ya maka data dikirim

Case #2: jika ternyata sense busy, maka ia akan terus sense dan ketika sense berubah menjadi free, maka ia akan generate timer seperti pada case #1.
Case #3: jika ada 2 PC sama" sense free, maka 2 PC tersebut generate timer yang berbeda agar nantinya ada yang sense free dan ada yang sense busy (tidak terjadi collision).

Sekian materi wired dan wireless :)

Jaringan Komputer - Menambahkan Informasi Network kedalam Routing Table

Ada 2 cara untuk menambahkan informasi network kedalam routing table, yaitu:
1. Static Routing
2. Dynamic Routing

1. Static Routing
    -> Cara paling manual yaitu dengan memasukkan sendiri informasi network lainnya kedalam routing table sebuah router.

2. Dynamic Routing
    -> mengaktifkan protokol tiap router
    -> Dibagi menjadi 3 jenis berdasarkan protokolnya, yaitu:
         A. Distance Vector (RIP, EIGRP)
         B. Path Vector (BGP)
         C. Link State (IS-IS, OSPF)

Parameter:
   -> Cost/ Metric: menghitung jarak
   -> Jarak: utk mengetahui jalur terdekat

RIP & OSPF

1. RIP
    -> parameter metric diakumulasikan (+1) setiap melewati 1 router
    -> split horizon: sebuah router tidak akan memberi kabar segmen ke arah network tersebut berasal.
    -> jika ada percabangan/paralel, rute (dengan metric) yang terbaik yang akan dimasukkan kedalam routing table.
    -> jika metric sama dengan jalur berbeda, maka dua-duanya dumasukkan kedalam routing table (disebut juga sbg Road Balancing).

2. OSPF
    -> tidak ada penambahan nilai metric
    -> yang dikomunikasikan adalah LSA (Link State Advertisement)
    -> ketika router diaktifkan, router" akan mengaktifkan LSA nya sendiri.      
         Ada 6 jenis LSA: tipe 1, 2, 3, 4, 5, 7.
         
         LSA TIPE 1 = identitas/ konfigurasi/ spesifikasi router
    -> menerangkan router memiliki router ID sekian, info link-link yang diaktifkan, serta info metric/cost.
    -> sblm LSA tipe 1 dikirim, router akan mengirimkan hello packet buat tau apakah perangkat lainnya adalah router juga/ bukan. LSA hanya disebar ke router" neighbor nya saja.
    -> LSA yang didapat masing" router akan dirangkai menjadi sebuah topologi lengkap.
    -> keterangan: dlm topologi yg disusun tsb, yang diakumulasi metric penerima, bukan pengirim.
    -> menggunakan algoritma Dijkstra.

Jalur Routing antar Routing Protocol:
1. OSPF
    -> cth 1: dari R1 ke 90.0
        > dihitung dari destinasi, sehingga: 10 + 10 + 10 + 10 + 10
    -> cth 2: dari R7 ke 10.0
        > dihitung dari destinasi, sehingga: 10 + 15 + 15 + 15 + 15
2. RIP
   Metric dikalkulasi sesuai berapa kali hop antar router.
Sekian mengenai Static dan Dynamic Routing!

Monday, April 11, 2016

Saturday, April 09, 2016

Tuesday, January 12, 2016

Monday, January 11, 2016

Aljabar Linier - Kisi-kisi UAS

- Basis untuk ruang baris dan ruang kolom dari suatu matriks A

- Cari basis ortogonal untuk ruang kolom matriks A dengan Gram-Schmidt

- Diagonalisasi Ortogonal

- Cari nilai eigen dan vektor eigen dari matriks A

- Transformasi linier dari Rn --> Rm seperti Example 10 halaman 451

- Perubahan basis : [w]B' = P(B-->B') [w]B

Happy Studying~

Friday, January 08, 2016

Arsitektur dan Organisasi Komputer - Instruction Sets: Addressing Modes and Formats

Addressing Modes:
- Immediate
- Direct
- Indirect
- Register
- Register Indirect
- Displacement ( Indexed )
- Stack

1) Immediate Addressing
-> operand merupakan bagian dari instruksi
-> contoh: ADD 5 -> tambah 5 ke dalam isi akumulator
-> no memory reference to fetch data
-> fast
-> limited range







2) Direct Addressing
-> address field contains address of operand
-> EA (effective address) = address field (A)
-> cth: ADD A -> tambah isi dari A dgn akumulator
-> Single memory reference to access data













3) Indirect Addressing
-> address field mengandung alamat dari operand (pointer)
-> EA = (A)
-> contoh: ADD (A) -> lihat isi dari A, mencari alamat isi dari A utk mendapatkan operand
-> may be nested, cascaded, multilevel. cth: EA = (((A)))












Contoh Soal ! !
Tuliskan ADD 400 secara:
- Immediate
- Direct
- Indirect

4) Register Addressing -> paling cepet, krn udh ada di CPU
-> EA = R











5) Register Indirect Addressing
-> EA = (R)
-> operand is in memory cell pointed to by contents of register R











6) Displacement Addressing
-> EA = A + (R)











7) Relative Addressing
-> EA = A + (PC) *PC = Program Counter
-> cth: get operand from A cells from current location pointed to by PC

8) Base-Register Addressing
(gw gagitu ngerti, jd modal copas aja ya)
-> A holds displacement
-> R holds pointer to base address
-> R may be implicit or explicit
-> cth: segment registers in 80x86

9) Indexed addressing
-> A = Base
-> R = displacement
-> EA = A + R
-> Good for accessing arrays
   EA = A + R
   R++

10) Combinations
-> Postindex
   EA = (A) + (R)

-> Preindex
   EA = (A + (R))

11) Stack Addressing
-> operand is (implicitly) on top of stack

**Stack pointer: register yang menyimpan alamat paling atas dari stack
^^^keluar di kuis pak Tatang

JAWABAN LATIHAN SOAL
Immediate: A = 400
Direct: A = 420
Indirect: A = 470

Arsitektur dan Organisasi Komputer - Instruction Sets: Characteristics and Functions

Instruction Sets: kumpulan instruksi yang dimengerti CPU

Elemen dari Instruksi:
- Operation Code (Op Code): do this
- Source Operand reference: to this
- Result Operand reference: put the answer here
- Next Instruction reference: when you have done that, do this...

Instruction Representation:
cth: ADD, SUB, LOAD

Simple Instruction Format:

Instruction Types:
- Data Processing
- Data Storage (main memory)
- Data Movement (I/O)
- Program flow control

Untuk mengambil operand, alamat dapat berjumlah 0, 1, 2, atau 3 alamat
3 Alamat
A = B + C

2 Alamat
A = A + B

1 Alamat
Accumulator, cth A++

0 Alamat
Menggunakan stack
cth:
PUSH A
PUSH B
ADD
POP C

sama saja seperti: C = A + B

Types of Operand:
- Addresses
- Numbers (integer/ floating point)
- Characters (ASCII dll)
- Logical Data (bits/ flags)

More addresses
-> More complex (powerful?) instructions
-> More registers 
     -> Inter-register operations are quicker
-> Fewer instructions per program

Fewer addresses
-> Less complex (powerful?) instructions
-> More instructions per program
-> Faster fetch/execution of instructions


Types of Operation:
- Data transfer
   Specify -> source, destination, amount of data
- Arithmetic
   Add, subtract, multiply, divide
   May include: increment (a++), decrement (a--), negate (-a)
- Logical
   AND, OR, NOT
- Conversion
   e.g binary to decimal
- I/O
   May be specific instructions
   May be done using data movement instructions (memory mapped)
   May be done by separate controller (DMA)
- System Control
   for OS use, CPU must be in specific state
- Transfer of Control
   Branch, dibagi 2:
   -> Branch Conditional, cth branch to x if result is zero
   -> Branch Unconditional, cth call 1000
   -> cth branch:

   Skip
   -> cth: increment and skip if zero
   -> bersyarat
   Subroutine Call
   -> tanpa syarat
   -> cth: interrupt call

Uses of Stack
Stack berguna utk menyimpan isi register kalau ada program yang loncat (bercabang) sehingga dia tau harus kembali ke mana
Stack hanya menyimpan operand yang di push dan alamat untuk kembali
Stack terdapat di RAM (memori bisa diambil secara acak)
Namun, stack tdk dapat diambil secara acak melainkan dengan LIFO
Contoh:



Arsitektur dan Organisasi Komputer - Computer Arithmetic

ALU -> melakukan kalkulasi dalam komputer.
         -> Handles integers, may handle floating point (real) numbers

Integer Representation
- 0 and 1 merepresentasikan semuanya.
- Contoh: 41 = 00101001
- No minus sign
- Sign Magnitude (pd leftmost bit, 0 utk +, 1 utk - )
- Two's Complement

TWO'S COMPLEMENT
-> negating is fairly easy
cth:
3 = 00000011
boolean complement gives 11111100 (1 jd 0, 0 jd 1)
add 1 to LSB (Least Significant Digit -> digit plg blkg) gives 11111101 -> -3

-> range of numbers:
8 bit two's complement: 2^7 -1 to -2^7
16 bit two's complement: 2^15 -1 to -2^15

-> addition and subtraction
addition: normal binary addition
subtraction: e.g. a - b = a + (-b)

-> multiplication
a) Unsigned Binary Multiplication


















Execution Example:
Keterangan:
C = Carry
A = tempat utk menampung perhitungan
Q = pengali (multiplier)
M = yang dikali (multiplicand)

Penjelasan:
Dari algoritma (flowchart) diatas, kita aplikasikan buat melakukan perkalian bilangan positif. Awalnya, nilai carry (C) dan A di set 0. Kita akan mengalikan 13 dengan 11 (1101 dan 1011). Count bernilai n, yaitu jumlah digit Q.
Next, kita lihat apakah Q0 nya bernilai 1? Q0 adalah LSD dari Q. Karena awalnya Q0 bernilai 1, kita menambahkan (add) A+M dan shift 1 digit ke kanan kanan. Jangan lupa count-1, nilai count sekarang adalah 3. nilai count != 0, maka diulang kembali.
Selanjutnya, nilai Q0 berubah menjadi 0, sehingga kita lakukan shift kembali dan count = 3-1 = 2. Nilai count != 0, maka perulangan kembali dilakukan.
Lalu, setelah di shift nilai Q0 menjadi 1, sehingga A+M menjadi 1101, dan shift kembali dilakukan. Count sekarang bernilai 1, dan belum sama dengan 0, sehingga perulangan lagi.
Akhirnya, kita lihat bahwa nilai Q0 adalah 1, sehingga A+M, Shift dan Count sekarang == 0, sehingga proses berakhir.

Hasil akhir dari perkalian adalah A, Q sehingga = 10001111 atau 143.

b) Signed Binary Multiplication -> menggunakan Booth's Algorithm





























Contoh:
Penjelasan:
Rata" sama kyk unsigned binary sih, tapi bedanya yang ini ada Q-1 nya. Ikutin flowchart aja ya wkwk :p

-> division:
a) Unsigned Binary Division
    - Cara pembagian biasa:
    - Umumnya dibagi menjadi 2: restoring dan non-restoring
1) Restoring
cth: 8/3 -> 1000 / 11

2) Non-restoring
cth: 8/3 -> 1000 / 11

Semoga dgn membaca sendiri udah bisa ngerti ya :) kalo emang masih blm ngerti feel free to ask :)

REAL NUMBERS
-> numbers with fraction
-> floating point:

1) Single precision/format

2) Double Precision Format

Cara menghitung biased exponent
dan seterusnya.


















Cara menghitung floating point:
contoh:
a. FP dari 102?
1) Cari biner dari 102 -> 1100110

2) Ubah bentuknya menjadi 1,...
1100110 -> 1,100110 x 2^6 (karena komanya geser 6 biner)

3) Cari biased exponentnya
Bias: 127
geser 6 biner -> E = 6
Bias + E = 133
Biner dari 133 = 10000101

4) Masukkan ke bentuk Floating point
 0    10000101   10011000000000
(+)    (Biased)     (Dapet dari angka dibelakang koma)

b. konversi hexa ke desimal dalam bentuk floating point (gw gapunya term yg lebih bagus dr ini lol)
cth: 8 3 6 0 0 0 0 0
1) ubah ke bentuk biner
1000 0011 0110 0000 0000 0000 0000 0000

2) ubah ke bentuk floating point
   1      | 000 0011 0 |  110 0000 0000 0000 0000 0000
(sign)    (biased)        (fractions)

3) ubah ke desimal, caranya:
-> sign = 1 berarti minus (-)
-> biased = 6, utk mjd 127 berarti kurang 121 -> 2^(-121)
-> fractions = pake cara angka dibelakang koma, sehingga 0,5 + 0,25 = 0,75
-> lalu, gabungin semuanya~
    - 1,75 x 2^(-121)
(jangan lupa didpn koma tambahin 1)
Hope it helps!