Jumat, 24 April 2020

Konsep Array, Array Dimensi 3 dan tringular Array



Konsep Array

Array [larik] merupakan hal fundamental yang sering dijumpai dalam banyak kasus di dunia pemrograman. Maka dari itu, sebagai programmer sobat perlu membekali diri dengan pemahaman konsep array dan mampu mengimplementasikannya ke dalam kasus-kasus yang sobat hadapi. Dalam artikel kali ini kita akan membahas pengantar / dasar materi array dalam C++, dimana artikel ini sebagai permulaan dalam mempelajari array sebelum sobat mempelajari artikel mengenai array lainnya yang lebih komplek.

Apa itu Array?

Array adalah sebuah variabel yang menyimpan sekumpulan data yang mempunyai tipe sama atau Array juga dapat disebut sebagai kumpulan dari nilai-nilai data yang bertipe sama (misal int) dalam urutan tertentu yang memakai sebuah nama yang sama. Setiap data tersebut menempati alamat memori atau lokasi yang berbeda-beda dan selanjutnya disebut dengan elemen array. Elemen array sendiri dapat diakses melalui indeks yang terdapat di dalamnya. Namun, penting sekali untuk di ingat bahwa dalam C++ indeks array selalu dimulai dari 0, buka 1. Berikut ini gambar yang mengilustrasikan sebuah array.
Ilustrasi Array atau Ilustrasi Array Satu Dimensi
Ilustrasi Array atau Ilustrasi Array Satu Dimensi

Karakteristik Array :
1. Mempunyai batasan dari pemesanan alokasi memory
(Bersifat Statis)
2. Mempunyai Type Data Sama (Bersifat Homogen)
3. Dapat Diakses Secara Acak


3 Hal yang harus diketahui dalam mendeklarasikan 
array : 
a. Type data array
b. Nama variabel array
c. Subskrip / index array

Macam-Macam Array

Array Satu Dimensi
Array satu dimensi merupakan array yang terdiri dari n buah kolom atau Array satu dimensi adalah array yang terdiri dari 1 subskrip array saja, setiap elemen array satu dimensi dapat diakses melalui indeks yang terdapat di dalamnya
Contoh Deklarasi Array Satu Dimensi:
 tipe_data  nama_array  [jumlah_elemen];

Rumus untuk menentukan jumlah elemen dalam Array :

n
π (Elemen Array)
i=1

π = Perkalian dari elemen sebelumnya
(untuk array dimensi dua & tiga)


PEMETAAN (MAPPING) 
ARRAY DIMENSI SATU KE STORAGE

Rumus : @A[i] = B + (i – 1) * L

Dimana : @A[i] : Posisi Array yg dicari
B : Posisi awal index di memory komputer
i : Subkrip atau indeks array yg dicari
L : Ukuran / Besar memory suatu type data


Array Dua Dimensi
Array dua dimensi merupakan array yang terdiri dari n buah baris dan m buah kolom, bentuknya dapat sobat bayangkan seperti matriks atau tabel. dimana indeks pertama menunjukan baris dan indeks kedua menunjukan kolom. Array dua dimensi biasa digunakan untuk pendataan nilai, pendataan penjualan dan lain sebagainya.
Contoh Deklarasi Array Dua Dimensi:
 tipe_data  nama_array  [jumlah_elemen_baris] [jumlah_elemen_kolom];


Menentukan jumlah elemen dalam Array dimensi dua:

n
π (Elemen array)
i=1

π = Perkalian dari elemen sebelumnya
(untuk array dimensi dua & tiga)

PEMETAAN (MAPPING) 
ARRAY DIMENSI DUA KE STORAGE

Terbagi Dua cara pandang (representasi) yang berbeda : 

1. Secara Kolom Per Kolom (Coloumn Major Order/CMO)
@M[i][j] = M[0][0] + {(j - 1) * K + (i - 1)} * L 

2. Secara Baris Per Baris (Row Major Order / RMO) 
@M[i][j] = M[0][0] + {(i - 1) * N + (j - 1)} * L


Keterangan : 
@M[i][j] = Posisi Array yg dicari, M[0][0] = Posisi alamat awal index 
array,i = Baris, j = kolom, L = Ukuran memory type data
K = Banyaknya elemen per kolom, N = Banyaknya elemen per baris

Array Tiga Dimensi
Array Tiga Dimensi merupakan array yang mempunyai ukuran lebih dari dua dimensi. Bentuk deklarasi array tiga dimensi serupa dengan deklarasi array satu dimensi maupun dua dimensi.
Contoh Deklarasi Array Tiga Dimensi : 
 tipe_data  nama_array [jumlah_elemen1] [jumlah_elemen2] ... [jumlah_elemen3];

Menentukan jumlah elemen dalam Array dimensi 3 :

n
π (index array)
i=1
π = Perkalian dari statemen sebelumnya

PEMETAAN (MAPPING) 
ARRAY DIMENSI TIGA KE STORAGE

Rumus :
@M[m][n][p] = M[0][0][0] + {((m-1) *(jum.elemen2 * 
jum.elemen3)) + ((n-1)*(jum.elemen 3)) + 
((p-1)}* L

Contoh Pemetaan : 
Penyelesaian : 
1. Tentukan jumlah elemen array A [2][4][3]
= (2) * (4) * (3) = 24
2. @M[m][n][p] = M[0][0][0] + {((m-1) *(jum.elemen2 * 
jum.elemen3)) + ((n-1)*(jum.elemen 
3)) + ((p-1)}* L
A[2][3][2] = 0011(H) + {((2–1) * 4 * 3) + ((3-1) * 3) + 
(2-1)} * 2
= 0011(H) + {12 + 6 + 1 } * 2 
= 0011(H) + 38 (D) 26 (H)
= 0011(H) + 26 (H)
= 0037(H)

Contoh Program array dimensi 3
/*
*Judul Program : Array dimensi 3
*Bahasa Program : Bahasa C
*Pembuat Program : Hendro Pramana 
Sinaga
*Tanggal Pembuatan : 5 Mei 2012
*/
#include <stdio.h>
#include <conio.h>
main()
{
char h=64, nama[5][4][22] = {
"AC 
Milan","Barcelona","Porto","Monaco",
"Liverpool","Real Madrid","CSK 
Moskow","PSG",
"Inter 
Milan","Arsenal","Atletico 
Madrid","Ajax",
"AS Roma","Manchester 
United","Dortmund","Valencia",
"Manchester City","Bayern 
Munich","Napoli","Vilareal"

printf("Liga Champions : \n\n");
for(i=0; i<5; i++)
{
++h;
printf("Grup %c \n",
h);
for(s=0; s<4; s++)
{
printf(" %d. %s 
\n", s+1, nama[i][s]); 
}
printf("\n");
}

getch();







Karena kali ini kita akan membahas konsep dasar array, maka kita akan menggunkan array satu dimensi untuk menjelaskan konsepnya, hal tersebut karena array satu dimensi merupakan bentuk dasar dari array dua dimensi dan array tiga dimensi.

Kelebihan Array :


  • Merupakan struktur penyimpanan data yang paling mudah.
  • Tipe data yang mampu menampung lebih dari satu data.
  • Memori ekonomis, bisa semua elemen terisi.
  • Waktu akses sama setiap elemen.
  • Dapat diakses secara random

Kekurangan Array :



  • Boros memory jika banyak elemen yang tidak digunakan.
  • Merupakan struktur penyimpanan data yang statis.
  • Kebanyakan bahasa pemrograman mengimplementasikan array statis yang sulit diubah ukurannya di pada waktu eksekusi. Bila penambahan dan pengurangan terjadi terus-menerus, maka representasi statis


TRINGULAR ARRAY
(ARRAY SEGITIGA)









Latihan soal :

1. suatu array A di deklarasikan sbb:
Float A[5][5][5] dengan alamat awal A[0][0][0] = 0021(H), berapakah alamat array A[2][3][2] dan A[5][4][3] ?
- jawaban :

# Array A[2][3][2]
- dik : Float A[5][5][5]
        A[0][0][0] = 0021(H)
        L = 4
- A[m][n][p] = M [0][0][0] + {((m-1) x (jum.elmn 2 x jum.elmn 3)) + ((n-1)x jum.elm 3) + ((p-1)) } x L
- A[2][3][2]  = 0021 (H) + { 25 + 10 + 1 } x 4
                    = 0021 (H) + 144 (D)
                    = 0021 (H) + 9 (H)
                    = 0030 (H)

# Array A[5][4][3]
- dik : Float A[5][5][5]
        A[0][0][0] = 0021(H)
        L = 4
- A[m][n][p] = M [0][0][0] + {((m-1) x (jum.elmn 2 x jum.elmn 3)) + ((n-1)x jum.elm 3) + ((p-1)) } x L
- A[5][4][3]  = 0021 (H) + { 100 + 15 + 2 } x 4
                     = 0021 (H) + 468 (D)
                     = 0021 (H) + 1D4 (H)
                     = 1F5 (H)

2. suatu array di deklarasikan sbb :
Char B[3][4][3] dengan alamat awal A[0][0][0] = 0021(H) , berapakah alamat array A[2][3][2] dan A[3][4][3]

- jawaban :
# Char B[2][3][2]
- dik : Float A[3][4][3]
        A[0][0][0] = 0021(H)
        L = 1
- A[m][n][p] = M [0][0][0] + {((m-1) x (jum.elmn 2 x jum.elmn 3)) + ((n-1)x jum.elm 3) + ((p-1)) } x L
- A[2][3][2]   = 0021 (H) + { 12 + 6 + 1 } x 1
                      = 0021 (H) + 19 (D)
                      = 0021 (H) + 13 (H)
                      = 0034 (H)

# Char B[3][4][3]
- dik : Float A[3][4][3]
        A[0][0][0] = 0021(H)
        L = 1
- A[m][n][p] = M [0][0][0] + {((m-1) x (jum.elmn 2 x jum.elmn 3)) + ((n-1)x jum.elm 3) + ((p-1)) } x L
- A[3][4][3]   = 0021 (H) + { 24 + 9 + 2 } x 1
                      = 0021 (H) + 35 (D)
                      = 0021 (H) + 23 (H)
                      = 0044 (H)

Sabtu, 11 April 2020

Representasi Data, Representasi Integer dan Penjumlahan serta pengurangan Bilangan Biner

REPRESENTASI DATA

REPRESENTASI DATA

Data adalah sesuatu yang belum mempunyai arti bagi penerimanya dan masih memerlukan adanya suatu pengolahan. Data bisa berwujud suatu keadaan, gambar, suara, huruf, angka, matematika, bahasa ataupun simbol-simbol lainnya yang bisa kita gunakan sebagai bahan untuk melihat lingkungan, obyek, kejadian ataupun suatu konsep. Representasi data adalah lambang untuk memberi tanda bilangan biner yang telah diperjanjikan yakni 0 (nol) untuk bilangan positif atau plus dan 1 untuk bilangan negatif atau minus. Pada bilangan n-bit, jika susunannya dilengkapi dengan bit tanda maka diperlukan register dengan panjang n+1 bit. Dalam hal ini, n bit digunakan untuk menyimpan bilangan biner itu sendiri dan satu bit untuk tandanya. Pada representasi bilangan biner yang dilengkapi dengan tanda bilangan, bit tanda ditempatkan pada posisi paling kiri.

TIPE DATA
Disetiap bahasa pemrograman, disediakan berbagai jenis tipe data. Penentuan tipe data yang tepat (sesuai dengan karakterisitik data yang akan diolah) akan menjadikan sebuah program dapat dieksekusi secara efektif.

Jenis-Jenis Tipe Data :
1. Integer
Interger adalah data numerik yang tidak mengandung pecahan, dan disajikan dalam memori komputer sebagai angka bulat. Mengacu pada obyek data dengan range -32768 s/d 32767. Operasi yang dapat dilaksanakan :

Penambahan ( + )
Pengurangan ( - )
Perkalian ( * )
Pembagian Integer ( / )
Pemangkatan ( ^ )
Operasi diatas disebut dengan operasi Binar atau arimatic operator yaitu operasi yang bekerja terhadap 2 Integer ( operand ). Sedangkan operator yang mempunyai satu operand disebut Unar ( Negasi = Not ). Selain itu ada juga operasi tambahan yang disediakan oleh bahasa pemrograman tertentu, yaitu :
MOD : sisa hasil pembagian bilangan
DIV : hasil pembagi bilangan
ABS : Mempositifkan bilangan negative
SQR : menghitung nilai akar dari bilangan Penulisan di dalam bahasa pemrograman Pascal : var a : integer
2. Real
Data numerik yang mengandung pecahan digolongkan dalam jenis data Real (floating point). Operasi yang berlaku pada bilangan integer juga berlaku pada bilangan real. Selain itu ada operasi lainnya seperti :
INT : membulatkan bilangan real , misal INT(34.67) = 34

3. Boolean
Type ini dikenal pula sebagai “ Logical Data Types”, digunakan untuk melakukan pengecekan suatu kondisi dalam suatu program. Elemen datanya hanya ada 2 yaitu True dan False, biasanya dinyatakan pula sebagai 1 dan 0. Operatornya terdiri dari : AND, OR, NOT. Dalam urutan operasi, Not mendapat prioritas pertama, kemudian baru AND dan OR kecuali bila diberi tanda kurung. Sama halnya seperti table logika, Nilai true dan false dapat juga dihasilkan oleh operator Relational.
Operator tersebut : < , > , <= , >= , = , <> , =
Ex. 6 < 12 : True ,
A <>A : False.

4. Karakter dan String
Type karater mempunyai elemen sebagai berikut :
(0,1,2,3,…,9,A,B,C,…,X,Y,Z,?,*,/,…)
Data type majemuk yang dibentuk dari karakter disebut STRING. Suatu string adalah barisan hingga simbol yang diambil dari himpunan karakter yang digunakan untuk membentuk string dinamakan Alfabet.
Contoh : Himpunan string {A,A,1} dapat berisi antara lain :
(AB1), (A1B), (1AB),…dst.
Termasuk string Null ( empty / hampa / kosong ) = { }
Secara umum suatu string S dinyatakan : S : a1, a2, a3,… an, Panjang dari string dilambangkan S =N atau Length (S) = N dimana N adalah banyaknya karakter pembentuk string. Untuk string Null = 0, untuk blank (spasi)=1.

Teori Bilangan
Teori Bilangan adalah suatu cara untuk mewakili besaran dari suatu item phisik. Sistem bilangan yang paling banyak dipergunakan oleh manusia adalah sistem bilangan desimal , yaitu sistem bilangan yang banyak menggunakan10 macam simbol untuk mewakili suatu besaran. Basis yang digunakan masing-masing sistem bilangan tergantung dari jumlah nilai bilangan yang dipergunakan.
Sistem bilangan desimal dengan basis 10, menggunakan 10 macam simbol bilangan yaitu 0,1,2,3,4,5,6,7,8 dan 9. Nilai suatu bentuk bilangan desimal dapat berupa integer desimal atau pecahan desimal. Integer desimal adalah nilai desimal yang bulat. Absolute value merupakan nilai mutlak dari masing-masing digit bilangan. Position value (nilsi posisi) merupakan penimbang atau bobot dari masing-masing digit tergantung dari letak posisinya yaitu bernilai basis dipangkatkan dengan urutan posisinya.
Contoh: 234,5 = 2x102 + 3×101 + 4×100 + 5×10-1
Artinya : 7 ratusan,2 puluhan,4 satuan.dan 5 sepersepuluhan
Sistem bilangan binari dengan 2 basis (binary berarti 2), menggunakan 2 macam simbol bilangan. Bilangan berbentuk 2 digit angka yaitu 0 dan 1.
Contoh: 101111 = 1×25 + 0×24 + 1×23 + 1×22 + 1×21 + 1×20 = 47
Sehingga (101101)2 = (47)10
Sistem bilangan oktal dengan basis 8 (octal berarti 8), menggunakan 8 macam simbol bilangan, yaitu 0,1,2,3,4,5,6 dan 7.
Contoh penjumlahan : 376 (8) + 45 (8) = ……. (8) 11 376 45 ------ + 443 5+6=11, 11/8= 1 sisa 3 1+7+4=12, 12/8= 1 sisa 4 1+3=4
Contoh perkalian : 56 (8) x 43 (8) = ……. (8) 56 43 ------ x 212 3x6=18, 18/8= 2 sisa 2 270 3x5=15+ 2 =17, 17/8=2 sisa 1 ------- + 4x6=24, 24/8= 3 sisa 0 3112 4x5=20+ 3 =23, 23/8=2 sisa 7
Sistem bilangan hexadecimal dengan 16 basis ( hexa berari 6 dan deca berarti10), menggunakan 16 macam simbol bilangan yaitu; 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E dan F. Bentuk nilai suatu bil.hexa dapat berupa integer hexa (hexa integer) atau pecahan hexa (hexa fraction) . Integer Hexa adalah nilai hexa yang bulat.
Contoh 152B (16)
artinya : 152B (16) = (1x16 3 ) + (5x16 2 ) +(2x16 1 ) +(Bx16 0 ) = (1x4096) + (5x256) + (2x16) + (11x1) = 4096 + 1280 + 32 + 11 = 5419 (10).
KONVERSI BILANGAN
1. Konversi Bilangan Biner ke Desimal
Sistem bilangan desimal/persepuluhan adalah sistem bilangan yang menggunakan 10 macam angka dari 0,1, sampai 9. Setelah angka 9, angka berikutnya adalah 1 0, 1 1, dan seterusnya (posisi di angka 9 diganti dengan angka 0, 1, 2, .. 9 lagi, tetapi angka di depannya dinaikkan menjadi 1). Sistem bilangan desimal sering dikenal sebagai sistem bilangan berbasis 10, karena tiap angka desimal menggunakan basis (radix) 10, seperti yang terlihat dalam contoh berikut:
angka desimal 152 jika diurai lebih detail akan sama dengan 1*102 + 5*101 + 2*100
152 = 1*102 + 5*101 + 2*100

2. Konversi Bilangan bulat Desimal ke Biner
Konversi bilangan bulat Desimal ke Biner dilakukan dengan membagi secara berulang-ulang suatu bilangan desimal dengan 2. Sisa setiap pembagian merupakan bit yang didapat.
Contoh: Konversi 625 Desimal ke Biner.
625 / 2 = 312 sisa 1 (LSB)
312 / 2 = 156 0
156 / 2 = 78 0
78 / 2 = 39 0
39 / 2 = 19 1
19 / 2 = 9 1
9 / 2 = 4 1
4 / 2 = 2 0
2 / 2 = 1 0
1 / 2 = 0 1 (MSB)
Jadi 625des = 1001110001bin

3. Konversi Bilangan Oktal ke Desimal
Contoh bilangan bulat:
1161okt = 625des
1161okt Berarti :
= 1 X 83 + 1 X 82 + 6 X 81 + 1 X 80
= 512+64+48+1
= 625des
Contoh bilangan pecahan: 13,6okt
= 11,75des 13,6okt Berarti :
= 1 X 81 + 3 X 80 + 6 X 8-1
= 8 + 3 + 0,75
= 11,75des

4. Konversi Bilangan Desimal ke Oktal
Contoh Bilangan Bulat :
625des = 1161okt
625 / 8 = 78 sisa 1 (LSB)
78 / 8 = 9 6
9 / 8 = 1 1
1 / 8 = 0 1 (MSB)
Contoh Bilangan Pecahan :
0,1des = 0,063….okt
0,1 X 8 = 0,8 sisa 0 (MSB)
0,8 X 8 = 6,4 6
0,4 X 8 = 3,2 3 (LSB)

5. Konversi Bilangan Oktal
Konversi bilangan oktal ke biner lebih mudah dibandingkan dengan konversi bilangan oktal ke desimal. Satu digit oktal dikonversi ke 3 bit biner.
Contoh: 1161okt = 001001110001bin
1 1 6 1
001 001 110 001
Contoh: 0,063okt = 0,000110011bin
0 6 3
000 110 011

6. Konversi Bilangan Biner ke Oktal
Contoh Bilangan Bulat:
1001110001bin = 1161okt
001 001 110 001
1 1 6 1
Contoh Bilangan Pecahan: 0,000110011bin = 0,063okt
000 110 011
0 6 3

7. Konversi Bilangan Heksadesimal ke DesimalContoh:
271heks = 625des
271heks = 2 X 162 + 7 X 161 + 1 X 160
= 512 + 112 + 1 = 625des
0,Cheks = 0,75des
0,C heks = 0 X 160 + 12 X 16-1
= 0 + 0,75
= 0,75des

Integer Representation
Semua bilangan dapat direprensentasikan dengan hanya menggunakan bilangan 0 dan 1
Untuk keperluan penyimpanan dan pengolahan komputer, kita tidak perlu menggunakan tanda minus dan titik, hanya bilangan biner yang dapat merepresentasikan bilangan.
Misalnya: -1101.01012 = -11.312510
Namun untuk keperluan penyimpanan dan pengolahan komputer, kita tidak perlu menggunakan tanda minus dan titik.
Hanya bilangan biner (0 dan 1) yang dapat merepresentasikan bilangan.
Bila kita hanya memakai integer non-negatif, maka representasinya akan lebuh mudah.
Sebuah word 8-bit dapat digunakan untuk merepresentasikan bilangan 0 hingga 255. Misalnya:
00000000= 0
00000001= 1
00101001 = 41
  10000000  = 128
   11111111= 225
Umumnya bila sebuah rangkaian n-bit bilangan biner an–1an-2…a1a0 akan diinterpretasikan sebagai unsigned integer A.

Representasi Nilai Tanda
Penggunaan unsigned integer tidak cukup untuk merepresentasikan bilangan integer negatif dan juga bilangan positif integer.
Karena itu terdapat beberapa konvesi lainnya yang dapat kita gunakan.
Konvesi-konvesi lainnya meliputi perlakuan terhadap bit yang paling berarti (paling kiri) di dalam word bit tanda.
Apabila bit paling kiri sama dengan 0 suatu bilangan adalah positif , sedangkan bila bit yang paling kiri sama dengan 1 bilangan bernilai negatif.
Bentuk yang paling sederhana representasi yang memakai bit tanda representasi nilai tanda. Pada sebuah word n bit, n – 1 bit yang paling kanan menampung  nilai integer. Misalnya:
+ 18 = 00010010
–  18 = 10010010 (sign-magnitude/nilai-tanda)
Terdapat beberapa kekurangan pada representasi nilai-tanda penambahan dan pengurangan memerlukan pertimbangan baik tanda bilangan ataupun nilai relatifnya agar dapat berjalan pada operasi yang diperlukan.
Kekurangannya lainnya terdapat dua representasi bilangan 0:
+ 010 = 00000000
–  010 = 10000000 (sign-magnitude)
REPRESENTASI KOMPLEMEN DUA
Representasi komplemen dua ( two’s complement representation)  mengatasi dua buah kekurangan yang terdapat pada representasi nilai- tanda.
Penambahan dan pengurangan   nilai-tanda (sign-magnitude) tidak mencukupi dan terdapat dua buah representasi bilangan nol.
Representasi komplemen dua menggunakan bit yang paling berarti sebagai bit tanda  memudahkannya untuk mengetahui apakah sebuah integer bernilai positif atau negatif.
Representasi ini berbeda dengan representasi nilai-tanda dengan cara menginterpretasikan bit-bit lainnya.
Representasi komplemen dua akan lebih mudah dimengerti dengan mendefinisikannya dalam bentuk jumlah bobot bit  seperti telah kita lakukan diatas pada representasi unsigned-magnitude dan sign-magnitude.
Bilangan nol akan diidentifikasikan sebagai positif,  memiliki tanda bit 0 dan nilai keseluruhan 0.
Kita dapat melihat bahwa range integer positif yang dapat direpresentasikan mulai 0 (seluruh magnitude bit-nya sama dengan 0) hingga 2n-1-1 (seluruh magnitude bit-nya 1).   bilangan yang lebih besar akan memerlukan bit yang lebih banyak.
Sekarang  bilangan negatif A, bit tanda an-1, sama dengan 1. n-1 bit sisanya dapat mengambil salah satu dari 2n-1nilai.
Karena itu, range integer negatif yang dapat direpresentasikan  mulai –1 hingga -2n-1.
Hasilnya  assignment yang mudah bagi nilai  untuk membiarkan bit-bit an-1 an-2…a:a0 akan sama dengan bilangan positif 2n-1 –A.
KONVERSI ANTARA PANJANG BIT YANG BERLAINAN
Kadang-kadang kita perlu mengambil sebuah integer n bit dan menyimpannya di dalam m bit, dengan m > n.
Pada notasi sign-magnitude  mudah dilaksanakan: cukup memindahkan bit tanda ke posisi terkiri yang baru dan mengisinya dengan nol. Misalnya:
+18 =                        00010010    (sign-magnitude, 8 bit)
+18 =         0000000000010010    (sign-magtitude, 16 bit)
-18 =                          10010010    (sign-magnitude, 8 bit)
-18 =          1000000000010010    (sign-magtitude, 16 bit)
Prosedur di atas tidak berlaku bagi integer negatif komplemen dua. Dengan memakai contoh yang sama:
+18 =                       00010010    (komplemen dua, 8 bit)
+18 =        0000000000010010    (komplemen dua, 16 bit)
-18 =                        10010010    (komplemen dua, 8 bit)
-65.518 =  1000000000010010     (komplemen dua, 16 bit)
Aturan integer komplemen dua adalah untuk memindahkan bit tanda ke posisi terkiri yang baru dan mengisinya dengan salinan-salinan bit tanda.
Bilangan positif diisi dengan 0 dan  bilangan negatif isi dengan 1
-18 =                          10010010    (komplemen dua, 8 bit)
-18 =          1111111100010010    (komplemen dua, 16 bit)

Aritmetika Integer
Bagian ini akan membahas fungsi-fungsi aritmatik bilangan dalam representasi komplemen dua.
A. Negasi
Pada notasi komplemen dua, pengurangan sebuah bilangan integer dapat dibentuk dengan mengunakan aturan berikut:
Anggaplah komplemen boolean seluruh bit bilangan integer (termasuk bittanda). Perlakukan hasilnya sebagai sebuah unsigned binary integer, tambahkan1. misalnya:18=00010010 (komplemen dua).
b.  Representasi Integer Positif,negatif,dan bilangan 0.
Bila sebuah bilangan integer positif dan negatif yang sama direpresentasikan (sign – magnitude),maka harus ada representasi bilangan positif dan negatif yang tidak sama.
Bila hanya terdapat sebuah representasi bilangan 0 (komplemen dua),maka harus ada representasi bilangan positif dan negatif yang tidak sama.
Pada kasus komplemen dua,terdapat representasi bilangan n-bit untuk -2n,tapi tidak terdapat untuk 2n.


Penjumlahan & Pengurangan Bilangan Biner

1. PENJUMLAHAN BILANGAN BINER

Ada 4 kondisi dalam penjumlahan bilangan biner
(0+0, 1+0, 0+1, 1+1)

dimana
0 + 0 = 0

1 + 0 = 1
0 + 1 = 1
1 + 1 = 0 (carry out 1)

Maksut dari Carry out, hasilnya tidak bisa memuat lebih dari 1 digit. Tetapi disimpan kedalam kolom sebelah yang lebih tingginilainya.

Contoh pada bilangan desimal

2 + 7 = 9 (CaryOut = 0)
15 + 8 = 23 (CaryOut = 1)

Yang dimaksud Carry Out adalah penyimpanan angka, lihat contoh diatas. 2+7=9 CarryOut = 0 karena tidak ada bilangan yang disimpan. 15+8=3 sisa 1, 1-nya digantung diatas , lalu 1+1=2, jadi hasilnya 23. 1 yang digantung diatas itulah yang disebut CarryOut.

Contoh pada bilangan biner.

2. PENGURANGAN BILANGAN BINER

kondisi yang muncul pada pengurangan bilangan biner
(0-0, 1-0, 0-1, 1-1)

dimana
0 - 0 = 0
0 - 1 = 1 borrow 1 (jika masih ada angka di sebelah kiri)
1 - 0 = 1
1 - 1 = 0
maksut dari borrow di sini ialah peminjaman satu digit angka dari  kolom sebelah yang memiliki nilai lebih besar agar hasil pengurangan mencukupi

contoh pada bilangan desimal

37 - 32 = 5 (borrow 0)
23 - 17 = 6 (3 borrow 1 dari angka 2)

pada perhitungan pertama tidak ada proses meminjam (borrow) angka yang lebih besar karena hasil pengurangan di digit belakang sudah mencukupi untuk dikurangkan dengan bilangan pengurangnya ,sementara pada perhitungan ke-2 ada proses peminjaman karena 3 tidak mencukupi dikurangkan dengan 7.

Contoh pada bilangan biner.