basic data types - Teknik Elektro UGM

advertisement
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??
Download