BASIC DATA TYPES, VARIABLES & OPERATORS Penyajian dan Pengolahan Informasi • Sehari-hari, kita menggunakan abjad-abjad dan angkaangka ketika kita bekerja dengan komputer. Misalnya ketika menulis menggunakan Word atau mengolah angka-angka memakai Excel • Contoh abjad/angka : ‘a’,’b’,”elektro”,100,255, dsb • Apakah komputer dapat secara langsung bisa mengolah/menyajikan data-data tersebut?? • Jawabnya:Komputer tidak dapat langsung menggunakan abjad/sistem bilangan yang biasa kita gunakan MENGAPA?? • Komputer digital hanya dapat mengenal dua keadaan, yang setara dengan bilangan biner 0 dan 1 • Setiap simbol dalam abjad perlu disandikan ke dalam sandi(kode) runtun digit biner (bit) dan menggunakan sistem bilangan biner untuk semua komputasi. • Jadi, apakah kita harus selalu menggunakan bilangan biner, ketika mengoperasikan komputer?? • Tentu tidak, karena di komputer sudah terdapat software yang mengkonversi informasi yang kita berikan menjadi bilangan biner • Yang perlu kita tahu sebagai programmer adalah cara komputer menyandikan abjad dan angka dalam bentuk biner Penyajian Abjad(karakter) Pada Komputer • Himpunan karakter yang digunakan dalam komputer disandikan dengan kode ASCII (American Standard code for Information Interchange) • Apa maksudnya?? karakter-karakter yang digunakan komputer,misalnya : ‘A’ .. ‘Z’, ‘a’ .. ‘z’, ‘0’…’9’,’!’..’%’ dst masing-masing mempunyai kode dalam bentuk bilangan biner, kode-kode yang mewakili karakter-karakter itulah yang disandikan dengan kode ASCII • Misalnya, kode ASCII karakter ‘a’ = …. , karakter ‘0’ = 00110000 • Kode ASCII berukuran 8 bit Penyajian bilangan bulat tak bertanda (unsigned integer) • Tidak mengenal bilangan negatif atau pecahan • Disandikan dalam bilangan biner • Banyaknya bilangan biner(bit) yang digunakan untuk menyandikan bilangan tersebut, menentukan range(jangkauan) bilangan yang disandikan • Contoh: bilangan 4 bit disandikan dari 0000 – 1111 untuk mewakili bilangan 0 – 15(bilangan basis 16). • Range bilangan unsigned 4 bit = 0 – 24-1 • Range bilangan unsigned n bit = 0 – 2n-1 Contoh : bilangan tak bertanda 4 bit Kode biner 4 bit bit 3 bit 2 bit 1 hexadeci mal decimal bit 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 1 0 2 2 0 0 1 1 3 3 0 1 0 0 4 4 0 1 0 1 5 5 0 1 1 0 6 6 0 1 1 1 7 7 1 0 0 0 8 8 1 0 0 1 9 9 1 0 1 0 10 A 1 0 1 1 11 B 1 1 0 0 12 C 1 1 0 1 13 D 1 1 1 0 14 E 1 1 1 1 15 F Penyajian bilangan bertanda(signed) • Terdiri dari bilangan bulat negatif dan positif • Misalnya bilangan 4 bit(basis 16) : ada 16 bilangan anggota maka range bilangan : {-8,-7,…,0,1,..,6,7} • Range : -(basis/2) s/d ((basis/2)-1) • Penentuan kode biner bilangan negatif menggunakan metode komplemen 2 • Kode_biner (n) = kode_biner_unsigned (basis + n), dengan n negatif • Contoh : kode -6 = kode biner unsigned (16 – 6) = kode biner unsigned 10 = 1010 • Range bilangan signed n bit = -(2n-1) s/d (2n-1)-1 Cara mengenali bil positif dan negatif untuk bilangan bertanda • Bilangan nol dan positif: • 0 s/d basis/2 (0 < n < [basis/2]-1 ) • Bilangan negatif • Basis/2 s/d basis – 1 (basis/2 < n < basis – 1) Signed & Unsigned • Contoh : – Suatu bilangan 16 bit, misalnya 0b1110101001100000 (0xEA60) akan dibaca sebagai bilangan 60000 oleh tipe unsigned, tapi akan dibaca sebagai -5536 oleh tipe signed. Bilangan heksadesimal (hex) • Sebagai simbol untuk bilangan 4 bit dari 0000 sampai 1111 • Simbol yang digunakan 0 s/d 9 ditambah A s/d F • Masing-masing simbol mewakili satu kombinasi 4 bit konversi • Contoh • 3010= 111102 = 1E16 • 1010 11012 = AD16 10102=A16 , 11012=D16 • 7F16=0111 11112 716=01112,F16=11112 • Lebih mudah melakukan konversi antara bilangan biner dan hexadecimal • Bilangan hexadecimal biasanya digunakan untuk menyajikan bilangan biner, terutama yang lebih dari 4 bit Konversi desimal ke biner • Bilangan desimal dikonversi ke biner dengan membagi bilangan tersebut dengan 2 kemudian diambil sisanya • Pembagian dilakukan sampai didapat hasil bagi = 1 • Sisa hasil bagi hanya berupa bilangan 1/0 • Bilangan biner disusun dari sisa yang didapat Contoh konversi • 9010= ……..2 • • • • • • • 2| 2| 2| 2| 2| 2| 2| 90 45 22 11 5 2 1 |0 |1 |0 |1 |1 |0 | • 9010= 10110102 90 dibagi 2 = 45 sisa 0 Notasi C/C++ • Desimal tulis saja apa adanya • Biner diberi awalan ‘0b’ / ‘0B’ – Contoh :0b11110000, 0b1010 • Hexadecimal diberi awalan ‘0x’ / ‘0X’ – Contoh :0xFF,0x10 Basic types di C Tipe data Bit Range char 8 -128 127 unsigned char 8 0 255 int 32 -2,147,483,648 2,147,483,647 unsigned int 32 0 4,294,967,295 short int 16 -32,768 32,767 unsigned short int 16 0 65,535 long int 32 -2,147,483,648 2,147,483,647 unsigned long int 32 0 4,294,967,295 float 32 3.40E-38 3.40E+38 double 64 1.7E-308 1.7E+308 long double 80 3.4E-4932 1.1E+4932 Basic Types • Tipe data float, double,dan long double digunakan untuk menyajikan tipe bilangan real, termasuk pecahan • Tipe data char dan int digunakan untuk menyajikan bilangan bulat • Di C, tipe data char juga digunakan untuk menyimpan kode ASCII suatu karakter Deklarasi Variabel • Nilai suatu variabel bisa diubah didalam program • Variabel harus dideklarasikan sebelum digunakan di program • Untuk memberi tahu program atau fungsi bahwa variabel tersebut akan digunakan • Bentuk umum: type variable_list; Contoh : char a,b;//deklarasi variable a dan b unsigned int jumlah;//deklarasi var jumlah float rerata;//deklarasi var rerata Literals • Pada suatu program, dimungkinkan mengakses suatu nilai (angka,karakter) secara langsung tanpa melewati suatu variabel, misalnya: a = 5; my_func(100); pi=3.14; ch=‘a’; printf(“hello world”); • Nilai 5, 100, 3.14,‘a’,”hello world” pada contoh di atas adalah literal Defined constant (#define) • #define adalah suatu preprosesor pengarah • Fungsinya adalah untuk mendefinisikan suatu konstanta yang bisa digunakan di seluruh bagian program • Formatnya : #define identifier value • Contoh : #define phi 3.14 , #define g 10 #define • Biasanya #define ditempatkan pada awal program atau pada file header • Seluruh bagian program bisa mengakses nilai yang sudah di-define tadi, misalnya: • a=phi; F=10*g;//phi dan g sudah terdefinisi • Ingat, phi dan g bukan variabel!! Jadi tidak bisa dipakai seperti ini : g=10; Inisialisasi variabel • Suatu variable bisa diinisialisasi secara langsung pada saat dideklarasikan, contoh: • • • • int a = 1000; char x = ‘x’; float nilai = 123.10; char hello[12] = “hello world”; Representasi suatu variabel di memori • Pada saat program berjalan, data-data variabel program akan menempati suatu ruang di memori • Berapa besar ruang di memori yang dipakai dan seperti apa konfigurasi data di memori, tergantung dari tipe datanya Representasi bilangan unsigned char dan int • Bilangan unsigned char d7 1 byte memori(8 bit) d6 d5 d4 d3 d2 d1 d0 Dengan, d0=data bit ke-0 dst • Bilangan unsigned short int 2 byte memori(16 bit) d15 d14 d13 d12 d11 d10 Byte ke-1, alamat memori =n+1 • d9 d8 d7 d6 d5 d4 d3 d2 d1 Byte ke-0, alamat memori = n Konfigurasi akan sama pada bilangan 32 bit, hanya jumlah bitnya yang berbeda d0 Representasi bilangan signed • Bilangan char 1 byte memori(8 bit) à 7 bit data& 1 sign bit sb d6 d5 d4 d3 d2 d1 d0 Dengan, d0=data bit ke-0 dst, sb=sign bit • Bilangan short int 2 byte memori(16 bit)à 15 bit data& 1 sign bit sb d14 d13 d12 d11 d10 Byte ke-1, alamat memori =n+1 • d9 d8 d7 d6 d5 d4 d3 d2 d1 Byte ke-0, alamat memori = n Konfigurasi akan sama pada bilangan 32 bit, hanya jumlah bitnya yang berbeda d0 Bagaimana suatu bilangan negatif disimpan di memori? • Menggunakan teknik komplemen2(pengantar tentang komplemen-2 ada di PPT ini hal 9) • Komplemen-2 komplemen-1 + 1 Apa itu komplemen-1? • Komplemen-1 suatu data adalah bit-wise negation dari data tersebut • Misalnya : d = 15 = 0b00001111 • Komplemen1(d)= 0b11110000 • Maka komplemen2(d) = 0b11110001 • Jadi -15 disimpan sebagai 0b11110001 di memori Bagaimana dengan bilangan pecahan atau real? • Bilangan pecahan disimpan di memori dalam bentuk floating point • Untuk membahas floating point, kita awali dengan menyajikan suatu bilangan pecahan dalam bentuk biner Representasi suatu bilangan pecahan • Representasi desimal : • misal: bilangan -17.25 • Scientific notation: • -17.25 = 1.725 ^-sign ^- mantissa * 10^1 ^- exponent Representasi suatu bilangan pecahan • Representasi biner bn ... b2 b1 b0 . b-2 b-3 ... Bit ke (-1) Bit ke 0 • Besarnya bilangan adalah: b-1 koma • B= …+ b2*22 + b1*21+ b0*20 + b-1*2-1 + b-2*2-2 + … • Misalnya bilangan – 17.25 = -(17 + ¼) = -(17 + 2-2) • Penulisan bilangan binernya : • 17 = 10001 , ¼ = 0.01 • Jadi, -17.25 = - 10001.01 b-n Format floating point • Suatu bilangan pecahan tidak disimpan di memori komputer dalam format representasi binernya • Bilangan tersebut akan disimpan dalam format floating point • Untuk format float 32 bit, skema bilangan tersebut adalah sbb: sb(S) Bit tanda (1 bit) 8 bit exponent (E) 23 bit mantissa(M) Format floating point • Bilangan yang akan disimpan dalam memori disajikan melalui persamaan berikut: • B =(-1)S * 2(E-127) * 1.M • Ket: S bernilai 0(positif) atau 1(negatif) • E dimasukkan ke rumus dalam bentuk desimal • M dimasukkan ke rumus dalam bentuk biner Contoh konversi • • • • Bilangan B=-17.25 Konversi ke biner B=-10001.01 ke biner scientific B=-1.000101 * 24 Dari bentuk biner scientific tersebut, B bisa ditulis sbb: • B = (-1)1 * 2(131-127) * 1.000101 • Jadi didapat sbb: • S = 1, E = 131, M =000101 Penyimpanan ke memori • S=1 • E = 131 = 10000011 • M = 00010100000000000000000 • 17 buah 0 ditambahkan sehingga jumlah bit total pada M adalah 23 bit • bentuk yang tersimpan di memori adalah: • 1 10000011 00010100000000000000000 • ket:hijau : S, biru : E, merah : M Operator • • • • Operator Aritmatika Increment & Decrement Operator Logika Operator Relasional Operator Aritmatika Operator Action - pengurangan / negasi + penjumlahan * perkalian / pembagian % modulus (sisa) Operator increment & decrement • Increment : menambah variabel tersebut dengan 1 ( x = x + 1) • Decrement : mengurangi variabel tersebut dengan 1 (x = x -1) Operator Action -- decrement (x=x-1) ++ increment (x=x+1) Operator relasional • Digunakan untuk membandingkan 2 variabel atau variable dengan literal • Output operasi relasional adalah kondisi true atau false (1 atau 0) Operator makna > lebih dari >= lebih dari atau sama dengan < kurang dari <= kurang dari atau sama dengan != tidak sama dengan == sama dengan Operator Logical • Digunakan untuk menghubungkan 2 operasi relasional atau mengoperasikan bilangan bool • Inputnya berupa kondisi true/false(1/0) outputnya juga kondisi true/false Operator Action && Logical AND || Logical OR ! Logical NOT Operator Bit-wise • Masukan operator bitwise ini adalah suatu bilangan/karakter • Operator ini mengoperasikan bit demi bit yang ada di karakter atau bilangan itu operat or description & Bitwise AND | Bitwise OR ^ Bitwise Exclusive OR (XOR) ~ Unary complement (bit inversion) << Shift Left >> Shift Right Operator lainnya • C masih punya beberapa operator lainnya • Selengkapnya baca buku teks casting • Merupakan konversi dari suatu tipe ke tipe yang lain • Notasi : • variabel2=(tipe)variabel1; //c dan c++ • Variabel2=tipe(variabel1); //khusus c++ • Contoh: • float pi=3.14; • int a; • a = (int)pi; //ini disebut tipe casting • //jadi, sekarang berapa nilai a??