Sabtu, 28 April 2012

Sedikit Tentang Floating Point


Floating-point atau bilangan titik mengambang, adalah sebuah format bilangan yang dapat digunakan untuk merepresentasikan sebuah nilai yang sangat besar atau sangat kecil. Bilangan ini direpresentasikan menjadi dua bagian, yakni bagian mantisa dan bagian eksponen (E). Bagian mantisa menentukan digit dalam angka tersebut, sementara eksponen menentukan nilai berapa besar pangkat pada bagian mantisa tersebut (pada posisi titik desimal). Sebagai contoh, bilangan 314600000 dan bilangan 0.0000451 dapat direpresentasikan dalam bentuk bilangan floating point: 3146E5 dan 451E-7 (artinya 3146 * 10 pangkat 5, dan 451 * 10 pangkat -7).

Kebanyakan CPU atau mikroprosesor sederhana tidak mendukung secara langsung operasi terhadap bilangan floating-point ini, karena aslinya mikroprosesor ini hanya memiliki unit aritmetika dan logika, serta unit kontrol yang beroperasi berdasarkan pada bilangan bulat (integer) saja.

Perhitungan atau kalkulasi terhadap nilai floating point pada jenis mikroprosesor sederhana dapat dilakukan dengan menggunakan perangkat lunak, sehingga operasinya sangat lambat. Untuk itulah, sebuah prosesor tambahan dibutuhkan untuk melakukan operasi terhadap jenis bilangan ini, yang disebut dengan unit titik mengambang. Dalam bahasa pemrograman, khususnya keluarga bahasa pemrograman C, bilangan titik mengambang direpresentasikan dengan tipe data float.

Ada 3 tipe floating point:
1. half precision binary floating-point format: binary16







2. Single precision binary floating-point format: binary32






3. Double precision binary floating-point format









contoh konversi biner ke float:


Mengenal sekilas INTEGER

Dalam ilmu komputer, istilah "Integer" digunakan untuk merujuk kepada tipe data apapun yang merepresentasikan bilangan bulat, atau beberapa bagian dari bilangan bulat. Disebut juga sebagai Integral Data Type.Nilai sebuah data dari sebuah tipe data integer adalah nilai bilangan bulat tersebut dalam matematika. Representasi data ini merupakan cara bagaimana nilainya disimpan di dalam memori komputer.

Tipe data integral terbagi menjadi dua buah kategori, baik itu bertanda (signed) ataupun tidak bertanda (unsigned). Bilangan bulat bertanda mampu merepresentasikan nilai bilangan bulat negatif, sementara bilangan bulat tak bertanda hanya mampu merepresentasikan bilangan bulat positif.

Representasi integer positif di dalam komputer sebenarnya adalah untaian bit, dengan menggunakan sistem bilangan biner. Urutan dari bit-bit tersebut pun bervariasi, bisa berupa Little Endian ataupun Big Endian. Selain ukuran, lebar atau ketelitian (presisi) bilangan bulat juga bervariasi, tergantung jumlah bit yang direpresentasikanya. Bilangan bulat yang memiliki n bit dapat mengodekan 2n. Jika tipe bilangan bulat tersebut adalah bilangan bulat tak bertanda, maka jangkauannya adalah dari 0 hingga 2n-1.






















Tipe integer standar yang digunakan dalam bahasa C adalah tipe int. Ukuran dan jangkauan data dari tipe int seringkali tergantung dari kompilator dan komputer yang digunakan, tapi biasanya setara dengan short int atau long int.
Selain tipe int, ada beberapa tipe data lain yang dapat menampung bilangan bulat, di antaranya:
char. Sebenarnya tipe data ini digunakan untuk menyimpan karakter dalam kode ASCII, tapi dapat juga digunakan untuk menyimpan integer dari 0 sampai 255
short int, ukuran 2 byte, jangkauan -32,768 sampai 32,767
int, ukuran 4 byte, jangkauan -2,147,483,648 hingga 2,147,483,647
Tipe-tipe data di atas dapat menyimpan integer negatif dan positif. Untuk menyimpan bilangan positif dan nol saja, dapat digunakan kata kunci unsigned sebelum tipe data. Sebagai contoh:
unsigned short int, ukuran 2 byte, jangkauan 0 sampai 65,535
unsigned int, ukuran 4 byte, jangkauan 0 sampai 4,294,967,295


Port Scanner Standar dengan c++

Port scanning adalah sebuah aktivitas untuk mendapatkan informasi yang menyeluruh mengenai status port (biasanya port TCP) pada sebuah host. Dengan port scanning, seseorang dapat mengetahui port-port mana saja yang terbuka pada sebuah host.

Didalam c++ kita bisa memanfaatkan beberapa library seperti, Ws2_32.lib, windows.h, dan juga winsock.h untuk membuat sebuah scanning port standar.

berikut langkah-langkah pembuatannya:
1. Menambahkan library dan juga menyertakan wswdata(silahkan googling)



















2. Membuat sebuah fungsi utama, yaitu untuk melakukan scanning port:





























3. Membuat sebuah fungsi void, atau tampilan sebagai inputan untuk ip komputer,dan port:























Dengan begitu selesai program kita, anda bisa mencoba nya sendiri dengan mendownload source code nya dsini: DOWNLOAD

Senin, 16 April 2012

Tugas Arsikom Komputer IAS

Buatlah program komputer IAS dimana data tersebut disimpan di memory. kita diminta untuk mengalikan data yang ada di memory alamat 0551 dengan data yang ada di memory alamat 0552, kemudian simpan hasil dari MSB di alamat memory 0556 dan LSB di alamat memory 0557. Selanjutnya kita diminta untuk menjumlahkan hasil dari data LSB perkalian dengan isi dimemory 0553 dan hasil penjumlahan ini disimpan di alamat 0559 dengan alamat PC counter awal di memory 0011. Yang diminta adalah Program set instruction, Instruction Cycle dan gambarkan peta memory nya.

1. Program Set Instruction


LOAD MQ, M(0551) = isi M(0551) ke MQ
MUL M(0552)         = AC = AC * M(0552) = MSB di AC
                     = LSB di MQ
STOR M(0556) = AC = M(0556) = MSB
LOAD MQ         = MQ = AC
STOR M(0557) = AC = M(0557) = MSB
LOAD M(0553) = AC berisi M(0553)
ADD M(0557)         = AC + LSB
STOR M(0559) = simpan hasil penjumlahan di M(0559)



2. Instruction Cycle

FETCH 1:
EXECUTE 1:

FETCH 2:
EXECUTE 2:

FETCH 3:
EXECUTE 3:

3. Peta Memory
A adalah isi memory di alamat (0551)
B adalah isi memory di alamat (0552)
C adalah isi memory di alamat (0553) kemudian dijumlahkan dengan nilai LSB hasil perkalian dan disimpan di memory (0553)
isi di memory (0556) adalah hasil MSB dari perkalian A dan B
isi di memory (0557) adalah hasil LSB dari perkalian A dan B

download versi document nya disini... DOWNLOAD





Sabtu, 14 April 2012

Instruksi Komputer IAS


Tahun 1946, von Neumann dan rekan-rekannya mulai melakukan perancangan stored-program komputer baru, dikenal sebagai komputer IAS. Struktur umum komputer IAS terdiri dari :
- Memori utama, yang menyimpan baik data maupun instruksi-instruksi dalam bentuk biner.
- ALU yang memiliki kemampuan mengoperasikan data biner.
- Control Unit, yang melakukan intepretasi instruksi-instruksi di dalam memori dan menyebabkan instruksi tersebut dieksekusi.
- Peralatan I/O yang dioperasikan oleh Control Unit.

Gambar. 1 Struktur Komputer IAS
Memori IAS terdiri dari 1000 lokasi penyimpan, yang disebut word, yang masing-masing terdiri dari 40 binary digit (bit). Baik data maupun instruksi disimpan di sini. Sehingga bilangan harus dinyatakan dalam bentuk biner, dan instruksi juga harus berupa kode biner.

Gambar. 2. Format Memori IAS
Gambar 2 menjelaskan format-format tersebut :
- Setiap bilangan dinyatakan oleh sebuah bit tanda dan 39 bit nilai
- Sebuah word dapat juga terdiri dari 20 bit instruksi, dengan masing-masing instruksi
terdiri dari 8-bit kode operasi (op code) yang menspesifikasikan operasi yang akan dibentuk dan sebuah 12 bit alamat yang menandai salah satu word di dalam memori (bilangan dari 0 hingga 999).
- Control unit mengoperasikan IAS dengan cara mengambil instruksi-instruksi dari memori dan mengeksekusinya sekaligus.
ALU merupakan singkatan dari Arithmetic Logic Unit dan terdiri dari 4 komponen, yaitu :
- Akumulator (AC) dan Multiplier Quotient (MQ), yang digunakan untuk menyimpan sementara ' operand dan hasil operasi ALU. Misalnya, hasil perkalian dua buah bilangan 40 bit adalah sebuah bilangan 80 bit; 40 bit yang paling berarti disimpan di dalam AC, dan 40 bit yang kurang berarti disimpan di MQ.
- Memory Buffer Register : berisi sebuah word yang akan disimpan di dalam memori atau digunakan untuk menerima word dari memori
- Arithmetic-Logic Circuits
Sedangkan komponen yang ada di dalam control unit adalah :
- Memory Address Register (MAR): Menentukan alamat word di memori untuk dituliskan dari MBR atau dibaca ke MBR.
- Instruction Register (IR): Berisi instruksi 8-bit op code yang akan dieksekusi.
- Instruction Buffer Register (IBR): Digunakan untuk menyimpan sementara instruksi sebelah kanan word di dalam memori.
- Program Counter (PC): Berisi alamat pasangan instruksi berikutnya yang akan diambil dari memori.
- Control Circuits
Komputer IAS memiliki 21 buah instruksi yang dikelompokkan seperti berikut ini :
- Data transfer : memindahkan data di antara memori dengan register-register ALU atau antara dua register ALU
- Unconditional branch : biasanya control unit mengeksekusi instruksi-instruksi di dalam urutan memori. Urutan ini dapat diubah dengan instruksi pencabangan yang memudahkan operasi repetitif
- Conditional branch : cabang dapat diubah tergantung pada suatu persyaratan, jadi memungkinkan titik-titik keputusan
- Arithmetic : operasi yang dibentuk oleh ALU
- Address modify : memungkinkan alamat-alamat untuk dikomputasi dalam ALU dan kemudian disisipkan ke dalam instruksi-instruksi yang disimpan di dalam memori. Hal ini memungkinkan fleksibilitas alamat yang tinggi pada program. Struktur komputer IAS inilah yang menjadi dasar pengembangan komputer-komputer pada era selanjutnya.
Instruksi IAS Set
Pengajaran
Jenis
Opcode Simbolis
Perwakilan
Deskripsi
Transfer data 00001010
00001001

00100001
00000001
00000010
00000011

00000100 LOAD MQ
LOAD MQ, M (X)
Stor M (X)
LOAD M (X)
LOAD-M (X)
LOAD | M (X) |
LOAD - | M (X) | Transfer isi register MQ ke AC akumulator
Transfer isi lokasi memori X untuk MQ

Transfer isi akumulator ke memori lokasi X
Transfer M (X) ke akumulator
Transfer-M (X) ke akumulator
Transfer absolut nilai M (X) ke akumulator

Transfer - | M (X) | ke akumulator
Cabang tak bersyarat
00001101

00001110 JUMP M (X, 0:19)
JUMP M (X, 20:39) Mengambil instruksi berikutnya dari kiri setengah dari M (X)
Mengambil instruksi berikutnya dari kanan setengah dari M (X)
Cabang Bersyarat
00001111

00010000 JUMP + M (X, 0:19)
JUMP + M (X, 20:39) Jika nomor di akumulator nonnegatif, mengambil instruksi berikutnya dari kiri setengah dari M (X)

Jika nomor di akumulator nonnegatif, mengambil instruksi berikutnya dari kanan setengah dari M (X)
Hitung 00000101

00000111

00000110

00001000

00001011
00001100
00010100

00010101 ADD M (X)

ADD | M (X) |
SUB M (X)

SUB | M (X) |

MUL M (X)
DIV M (X)
LSH

RSH Tambahkan M (X) untuk AC, menempatkan hasilnya di AC
Tambahkan | M (X) | untuk AC, menempatkan hasilnya di AC
Kurangi M (X) dari AC; menempatkan hasilnya di AC
Kurangi | M (X)} dari AC, menempatkan sisanya di AC
Multiply M (X) oleh M (Q); bit yang paling signifikan menempatkan hasil di AC, menempatkan signifikan bit kurang dalam M (Q)
Bagi AC oleh M (X); menempatkan quotient di MQ dan sisanya di AC
akumulator Kalikan dengan 2 (yaitu, bergeser ke kiri satu posisi bit)
Bagi akumulator oleh 2 (yaitu, bergeser ke kanan satu posisi bit)
Alamat memodifikasi 00010010

00010011 Stor M (X, 8:19)
Stor M (X, 28:39) Ganti kiri field alamat di M (X) dengan 12-bit yang paling kanan AC
Ganti alamat kanan lapangan di M (X) dengan 12-bit yang paling kanan AC

Komputer IAS


ENIAC (Electronic Numerical Integrator And Computer)
Didesain dan dibangun/dikerjakan oleh sebuah tim khusus yang 
dipimpin oleh John Mauchly dan John Presper Eckert di University of
Pennsylvania, berdasarkan pesanan dari Angkatan Bersenjata Amerika 
yang sebenarnya digunakan untuk membantu perhitungan jarak dan table-
tabel lintasan peluru yang digunakan pada senjata-senjata baru. 
Komputer ini merupakan komputer (General-purpose Electronic 
Digital) pertama di dunia, yang diselesaikan pada tahun 1946. 
Komputer ini berukuran 500 m2 (sangat besar) dan beratnya 30 ton, serta 
terdiri dari 18,000 tabung hampa. Ketika beroperasi membutuhkan daya
140 Kilo Watt listrik. Dan ENIAC merupakan komputer berbasis angka
desimal bukan biner yang di-operasi-kan secara manual dengan cara 
mengubah kedudukan saklar serta menyambung dan memutuskan kabel. 

Von Neumann Machine.


Di tahun 1946, seorang Matematikawan John von Neumann yang 
juga adalah konsultan dalam proyek pembuatan komputer ENIAC 
memulai mendesain sebuah komputer yang berkonsep “stored-program”
yang disebut dengan EDVAC (Electronic Discrete Variable Computer)
dan dinamai dengan IAS di Princeton Institute for Advanced Studies. Dan 
sayangnya IAS ini tidak selesai sampai dengan tahun 1952. Di bawah ini 
merupakan diagram struktur komputer IAS secara global. 
Dalam diagram ini terlihat bahwa CU(Control Unit) maupun ALU
(Arithmetic Logic Unit) mempunyai lokasi penyimpanan yang disebut
dengan register, yang didefinisikan sebagai berikut:

• Memory Buffer Register (MBR) 
Berisi word yang akan disimpan di memori atau digunakan
untuk menerima word dari memori. 

• Memory Address Register (MAR)
Mengalokasikan alamat di memori (word) untuk ditulis 
atau dibaca ke MBR. 

• Instruction Register (IR)
Berisi instruksi 8 bit op code (operation code) yang sedang 
dieksekusi. 

• Instruction Buffer Register (IBR) 
Digunakan untuk instruksi-instruksi sementara dari sebuah 
word di memori. 

• Program Counter (PC) 
Berisi alamat sepasang instruksi berikutnya yang akan
diambil (fetch) dari memori. 

• Accumulator (AC) dan Multiplier-Quotient (MQ) 
Digunakan untuk operan-operan dan hasil operasi ALU 
yang bersifat sementara. 

Catatan: 
Word disini adalah lokasi penyimpanan di memori IAS yang masing-
masing terdiri dari 40 bit (binary digit), dimana data dan instruksi 
disimpan disini dan berujud bilangan biner. 
Dari gambar di atas terlihat bahwa setiap word terdiri dari sign bit dan 39
bit nilai. Word juga dapat terdiri dari 2 buah instruksi 20 bit, dimana setiap
instruksi terdiri dari 8 bit op code dan 12 bit alamat dalam memori. Commercial Computers.
Pada tahun 1947, Eckert-Mauchly Computer Corporation yang 
didirikan oleh John Presper Eckert dan John Mauchly membuat pabrik 
komputer komersial (pembuatan secara massal dan dijual untuk umum). 
Komputer komersial pertama yang sukses dipasaran adalah UNIVAC I 
(Universal Automatic Computer). Kemudian pada tahun 1950 diluncurkan
UNIVAC II yang mempunyai memori lebih besar dan kecepatan yang 
lebih tinggi. Dengan diluncurkannya UNIVAC II ini ternyata membawa 
pengaruh terhadap industri komputer. Mengapa demikian ?

a. Pabrik-pabrik komputer akan melanjutkan pembuatan komputer 
yang lebih tinggi spesifikasinya dan lebih cepat unjuk kerjanya. 
b. Setiap pabrik komputer akan membuat komputer baru yang 
upward compatible dengan komputer yang lama, sehingga 
program-program yang ditulis untuk komputer lama akan dapat 
dijalankan di komputer baru. 

Disinilah nama IBM sudah mulai muncul dengan diluncurkannya
komputer yang disebut dengan Mark I. 

Array dalam Bahasa C


Array adalah kumpulan dari nilai-nilai data bertipe sama dalam urutan tertentu yang menggunakan sebuah nama yang sama.

Nilai-nilai data di suatu larik disebut dengan elemen-elemen larik.

Letak urutan dari suatu elemen larik ditunjukkan oleh suatu subscript atau suatu index.

Menurut dimensinya, array dapat dibedakan menjadi :

1.      Array berdimensi satu

o       Setiap elemen array dapat diakses melalui index

o       Index array secara default dimulai dari 0

o       Deklarasi array :

Tipe_array nama_array[ukuran]



2.      Array berdimensi dua

-          Array dua dimensi merupakan array yang terdiri dari m buah baris dan n buah buah kolom. Bentuknya dapat berupa matriks atau tabel.

-          Deklarasi array :

Tipe_array nama_array [baris][kolom]



3.      Array multidimensi

-          Array multidimensi merupakan array yang mempunyai ukuran lebih dari dua. Bentuk pendeklarasian array multidimensi sama saja dengan deklarasi array dimensi satu maupun dimensi dua.

-          Deklarasi array :

Tipe_array nama_array [ukuran 1][ukuran 2] . . . [ukuran N]



Perbedaan array dengan tipe data lain :

Array dapat mempunyai sejumlah nilai, sedangkan tipe data lain hanya dihubungkan dengan sebuah nilai saja.

Array dapat digunakan untuk menyimpan beberapa nilai tipe data lain data (char, int, float, double, long, dll) yang sama dengan satu nama saja.

Selain itu, array dapat berupa  satu dimensi atau lebih, sedangkan tipe data lain hanya berupa satu dimensi.





Array juga dapat digunakan sebagai parameter. Jenisnya :
a.   Array dimensi satu sebagai parameter :

-     Pengiriman parameter berupa array dimensi satu merupakan pengiriman secara acuan/referensi, karena yang dikirimkan adalah alamat dari elemen pertama arraynya, bukan seluruh nilai-nilai elemenya. Alamat elemen pertama dari array dapat ditunjukkan oleh nama lariknya yang tidak ditulis dengan indeknya.

      Contoh:

#include <stdio.h>

#include <conio.h>



int length(char x[]);



int main()

{

char string[256];

printf(“Ketikkan sembarang kalimat <maks.256 karakter> : “);

   gets(string);

Lstring=length(string);

getch();

return(0);

}



int length(char x[])

{

    int i, cek, L=0;  

    for(i=0;i<256;i++)

    {

        if (x[i]!=”)

            L+=1;

        else break;

    }

    return(L);    

}

b.   Array dua dimensi sebagai parameter :

-     Pengiriman parameter berupa array dua dimensi hampir sama dengan pengiriman parameter array satu dimensi, hanya saja perbedaannya adalah dalam array dua dimensi harus menyebutkan baris dan kolom array dimensi dua tersebut, mendeklarasikan MAX_ROWS dan MAX_COLS yang digunakan untuk pengiriman parameter array dua dimensi dan pada saat pengiriman parameter formal array dua dimensi, kita harus menyebutkan banyaknya dimensi array untuk kolom, sehingga ukuran kolom dapat diketahui, hal ini berkaitan dengan pemesanan variabel array di memori.

Contoh:

#include <stdio.h>

#include <conio.h>



void isi_matriks(int m[10][10],int b,int k);



int main()

{

int m1[10][10];

   printf(“Masukkan baris dan kolom Matriks I  <maks. 10 x 10> : “);

   scanf(“%d x %d”,&b1,&k1);

   printf(“Masukkan baris dan kolom Matriks II <maks. 10 x 10> : “);

   scanf(“%d x %d”,&b2,&k2);

   printf(“Masukkan isi Matriks I : \n”);

   isi_matriks(m1,b1,k1);

getch();

     return(0);

}



void isi_matriks(int m[10][10],int b,int k)

{

     int i,j;

     for (i=1;i<=b;i++)

     {

               for(j=1;j<=k;j++)

                 scanf(“%d”,&m[i][j]);

     }

     printf(“Matriks I : \n”);

     for (i=1;i<=b;i++)

     {

               for(j=1;j<=k;j++)

                 printf(“%8d”,m[i][j]);

               printf(“\n”);

     }

}

Bahasa C dan Library nya

Library function adalah fungsi-fungsi yang disediakan oleh bahasa C dan C++ dalam file-file header atau librarynya. Salah satu fungsi library yang telah diperkenalkan yaitu cout, yang berfungsi untuk mencetak ke layar monitor. Fungsi dikelompokan menurut jenis dan sifatnya kemudian disimpan didalam sebuah file yang berekstensi .h. Salah satunya adalah stdio.h.


Library stdio.h


Library stdio.h adalah library pada bahasa C yang digunakan untuk operasi input-output (stdio = Standar Input dan Output). Tanpa menggunakan library ini maka perintah-perintah input dan output tidak dapat dieksekusi.

Library Functions:

clearr()  fclose()   fccloseall() fdopen()   fflush()
fgetc()   fgetchar() fgetpos()    fgets()    flushall()
fopen()   fprint()   fputc()      fputchar() fputs()
fread()   free()     freopen()    fscan()    fseek()
fsetpos() ftell()    fwrite()     gets()     getw()
perror()  printf()   puts()       rename()   rewind()
scanf()   unlink()


library math.h merupakan sebuah library yang disediakan untuk melakukan perhitungan secara matematika.

Library Functions :

abs ()      acosh()      asin()      atan()      atan2()
atof()     ceil()       cos()       exp()       fabs()
floor()    fmod()       labs()      ldexp()    log()
log10()   pow()        sin()        sinh()      sqrt()
tan()       tanh()

Contoh pengguna library math.h dengan library functions cos() dan sin() dalam program :



Flowchart, Pengertian dan contohnya

Bagan alir  (flowchart) adalah bagan  (chart) yang menunjukkan alir  (flow) di dalam program atau prosedur sistem secara logika. Bagan alir digunakan terutama untuk alat bantu komunikasi dan untuk dokumentasi.

Bila seorang analis dan programmer akan membuat flowchart, ada beberapa petunjuk yang harus diperhatikan, seperti:

  1. Flowchart digambarkan dari halaman atas ke bawah dan dari kiri kekanan.
  2. Aktivitas yang digambarkan harus didefinisikan secara hati-hati dan definisi ini harus dapat dimengerti oleh pembacanya.
  3. Kapan aktivitas dimulai dan berakhir harus ditentukan secara jelas.
  4. Setiap langkah dari aktivitas harus diuraikan dengan menggunakan deskripsi kata kerja
  5. Setiap langkah dari aktivitas harus berada pada urutan yang benar.
  6. Lingkup dan range dari aktifitas yang sedang digambarkan harusditelusuri dengan hati-hati. Percabangan-percabangan yang memotong aktivitas yang sedang digambarkan tidak perlu digambarkan pada flowchart yang sama. Simbol konektor harus digunakan dan percabangannya diletakan pada halaman yang terpisah atau hilangkan seluruhnya bila percabangannya tidak berkaitan dengan sistem.
  7. Gunakan simbol-simbol flowchart yang standar
contoh program:

Kalau dilihat struktur program nya, maaka akan terlihat percabangan, berikut contoh aliran flowchart dari cth diatas: