/*
Nama Mahasiswa : Muhammad Kennedy
NIM : 120402057
Mata Kuliah : Dasar Pemograman
Departemen : Teknik Elektro
Fakultas : Teknik USU
*/
#include <stdio.h>
int main()
{
//deklarasi variabel yang digunakan
int desimal,hasil_bagi;
int angka1,angka2,angka3,angka4,angka5,angka6,angka7,angka8,angka9,angka10;
int angka11,angka12,angka13,angka14,angka15,angka16,angka17,angka18,angka19,angka20;
int angka21,angka22,angka23,angka24,angka25,angka26,angka27,angka28,angka29,angka30;
int angka31,angka32;
int sisa13, sisa14,sisa15,sisa16,sisa17, sisa18,sisa19,sisa20,sisa21, sisa22,sisa23,sisa24,sisa25,sisa26,sisa27,sisa28,sisa29,sisa30,sisa31,sisa32;
int sisa12, sisa11,sisa10,sisa9,sisa8, sisa7,sisa6,sisa5,sisa4, sisa3,sisa2,sisa1;
printf("Konversi Bilangan Desimal ke Hexadesimal dan Biner Two's Complement\n");
printf("===================================================================\n");
printf("Ketik sebuah bilangan bulat desimal (maksimum 9 digit):\n");
scanf("%d", &desimal);//
if(desimal < 1000000000)
{
//untuk mengubah bilangan decimal ke hexadecimal menggunakan %.8X, karena hanya 8 digit
printf("Dalam basis 16 (hexadecimal), bilangan tersebut =\n%.8X\n\n", desimal);
//convert decimal ke binary
angka1=desimal%2;//1 , memberikan sisa pemebagian
hasil_bagi=desimal/2;//1 , temp = tempat menyimpan sementara nilai pembagian dengan 2
angka2=hasil_bagi%2;//1
hasil_bagi=hasil_bagi/2;//0
angka3=hasil_bagi%2;//0
hasil_bagi=hasil_bagi/2;//0
angka4=hasil_bagi%2;
hasil_bagi=hasil_bagi/2;
angka5=hasil_bagi%2;
hasil_bagi=hasil_bagi/2;
angka6=hasil_bagi%2;
hasil_bagi=hasil_bagi/2;
angka7=hasil_bagi%2;
hasil_bagi=hasil_bagi/2;
angka8=hasil_bagi%2;
hasil_bagi=hasil_bagi/2;
angka9=hasil_bagi%2;
hasil_bagi=hasil_bagi/2;
angka10=hasil_bagi%2;
hasil_bagi=hasil_bagi/2;
angka11=hasil_bagi%2;
hasil_bagi=hasil_bagi/2;
angka12=hasil_bagi%2;
hasil_bagi=hasil_bagi/2;
angka13=hasil_bagi%2;
hasil_bagi=hasil_bagi/2;
angka14=hasil_bagi%2;
hasil_bagi=hasil_bagi/2;
angka15=hasil_bagi%2;
hasil_bagi=hasil_bagi/2;
angka16=hasil_bagi%2;
hasil_bagi=hasil_bagi/2;
angka17=hasil_bagi%2;
hasil_bagi=hasil_bagi/2;
angka18=hasil_bagi%2;
hasil_bagi=hasil_bagi/2;
angka19=hasil_bagi%2;
hasil_bagi=hasil_bagi/2;
angka20=hasil_bagi%2;
hasil_bagi=hasil_bagi/2;
angka21=hasil_bagi%2;
hasil_bagi=hasil_bagi/2;
angka22=hasil_bagi%2;
hasil_bagi=hasil_bagi/2;
angka23=hasil_bagi%2;
hasil_bagi=hasil_bagi/2;
angka24=hasil_bagi%2;
hasil_bagi=hasil_bagi/2;
angka25=hasil_bagi%2;
hasil_bagi=hasil_bagi/2;
angka26=hasil_bagi%2;
hasil_bagi=hasil_bagi/2;
angka27=hasil_bagi%2;
hasil_bagi=hasil_bagi/2;
angka28=hasil_bagi%2;
hasil_bagi=hasil_bagi/2;
angka29=hasil_bagi%2;
hasil_bagi=hasil_bagi/2;
angka30=hasil_bagi%2;
hasil_bagi=hasil_bagi/2;
angka31=hasil_bagi%2;
hasil_bagi=hasil_bagi/2;
angka32=hasil_bagi%2;
hasil_bagi=hasil_bagi/2;
//untuk mendapatkan one's complement dari bilangan desimal negatif
if(desimal<0)
{
if(angka32==0) // jika digit32 bernilai 0, maka akan di komplemen menjadi 1, begitu seterusnya
{
angka32=1;
//
}
else
{
angka32=0;
}
if(angka31==0)
{
angka31=1;
}
else
{
angka31=0;
}
if(angka30==0)
{
angka30=1;
}
else
{
angka30 =0;
}
if(angka29==0)
{
angka29=1;
}
else
{
angka29=0;
}
if(angka28==0)
{
angka28=1;
}
else
{
angka28=0;
}
if(angka27==0)
{
angka27=1;
}
else
{
angka27 =0;
}
if(angka26==0)
{
angka26=1;
}
else
{
angka26=0;
}
if(angka25==0)
{
angka25=1;
}
else
{
angka25=0;
}
if(angka24==0)
{
angka24=1;
}
else
{
angka24=0;
}
if(angka23==0)
{
angka23=1;
}
else
{
angka23=0;
}
if(angka22==0)
{
angka22=1;
}
else
{
angka22=0;
}
if(angka21==0)
{
angka21=1;
}
else
{
angka21=0;
}
if(angka20==0)
{
angka20=1;
}
else
{
angka20=0;
}
if(angka19==0)
{
angka19=1;
}
else
{
angka19 =0;
}
if(angka18==0)
{
angka18=1;
}
else
{
angka18=0;
}
if(angka17==0)
{
angka17=1;
}
else
{
angka17=0;
}
if(angka16==0)
{
angka16=1;
}
else
{
angka16=0;
}
if(angka15==0)
{
angka15=1;
}
else
{
angka15=0;
}
if(angka14==0)
{
angka14=1;
}
else
{
angka14=0;
}
if(angka13==0)
{
angka13=1;
}
else
{
angka13=0;
}
if(angka12==0)
{
angka12=1;
}
else
{
angka12=0;
}
if(angka11==0)
{
angka11=1;
}
else
{
angka11=0;
}
if(angka10==0)
{
angka10=1;
}
else
{
angka10=0;
}
if(angka9==0)
{
angka9=1;
}
else
{
angka9 =0;
}
if(angka8==0)
{
angka8=1;
}
else
{
angka8=0;
}
if(angka7==0)
{
angka7=1;
}
else
{
angka7=0;
}
if(angka6==0)
{
angka6=1;
}
else
{
angka6=0;
}
if(angka5==0)
{
angka5=1;
}
else
{
angka5=0;
}
if(angka4==0)
{
angka4=1;
}
else
{
angka4=0;
}
if(angka3==0)
{
angka3=1;
}
else
{
angka3=0;
}
if(angka2==0)
{
angka2=1;
}
else
{
angka2=0;
}
if(angka1==0)
{
angka1=1;
}
else
{
angka1=0;
}
//untuk mendapatkan hasil dari two's complement dimana one's complement ditambahkan dengan 1
angka1+=1;
if(angka1==2)
{
angka1=0;
sisa1=1;
}
else
{
angka1=1;
sisa1=0;
}
angka2+=sisa1;
if(angka2==2)
{
angka2=0;
sisa2=1;
}
else
{
angka2=1;
sisa2=0;
}
angka3+=sisa2;
if(angka3==2)
{
angka3=0;
sisa3=1;
}
else
{
angka3=1;
sisa3=0;
}
angka4+=sisa3;
if(angka4==2)
{
angka4=0;
sisa4=1;
}
else
{
angka4=1;
sisa4=0;
}
angka5+=sisa4;
if(angka5==2)
{
angka5=0;
sisa5=1;
}
else
{
angka5=1;
sisa5=0;
}
angka6+=sisa5;
if(angka6==2)
{
angka6=0;
angka6=1;
}
else
{
angka6=1;
sisa6=0;
}
angka7+=sisa6;
if(angka7==2)
{
angka7=0;
sisa7=1;
}
else
{
angka7=1;
sisa7=0;
}
angka8+=sisa7;
if(angka8==2)
{
angka8=0;
sisa8=1;
}
else
{
angka8=1;
sisa8=0;
}
angka9+=sisa8;
if(angka9==2)
{
angka9=0;
sisa9=1;
}
else
{
angka9=1;
sisa9=0;
}
angka10+=sisa9;
if(angka10==2)
{
angka10=0;
sisa10=1;
}
else
{
angka10=1;
sisa10=0;
}
angka11+=sisa10;
if(angka11==2)
{
angka11=0;
sisa11=1;
}
else
{
angka11=1;
sisa11=0;
}
angka12+=sisa11;
if(angka12==2)
{
angka12=0;
sisa10=1;
}
else
{
angka12=1;
sisa12=0;
}
angka13+=sisa12;
if(angka13==2)
{
angka13=0;
sisa13=1;
}
else
{
angka13=1;
sisa13=0;
}
angka14+=sisa13;
if(angka14==2)
{
angka14=0;
sisa14=1;
}
else
{
angka14=1;
sisa14=0;
}
angka15+=sisa14;
if(angka15==2)
{
angka15=0;
sisa15=1;
}
else
{
angka15=1;
sisa15=0;
}
angka16+=sisa15;
if(angka16==2)
{
angka16=0;
sisa16=1;
}
else
{
angka16=1;
sisa16=0;
}
angka17+=sisa16;
if(angka17==2)
{
angka17=0;
sisa17=1;
}
else
{
angka17=1;
sisa17=0;
}
angka18+=sisa17;
if(angka18==2)
{
angka18=0;
sisa18=1;
}
else
{
angka18=1;
sisa18=0;
}
angka19+=sisa18;
if(angka19==2)
{
angka19=0;
sisa19=1;
}
else
{
angka19=1;
sisa19=0;
}
angka20+=sisa19;
if(angka20==2)
{
angka20=0;
sisa20=1;
}
else
{
angka20=1;
sisa20=0;
}
angka21+=sisa20;
if(angka21==2)
{
angka21=0;
sisa21=1;
}
else
{
angka21=1;
sisa21=0;
}
angka21+=sisa20;
if(angka21==2)
{
angka21=0;
sisa21=1;
}
else
{
angka21=1;
sisa21=0;
}
angka22+=sisa21;
if(angka22==2)
{
angka22=0;
sisa22=1;
}
else
{
angka22=1;
sisa22=0;
}
angka23+=sisa22;
if(angka23==2)
{
angka23=0;
sisa23=1;
}
else
{
angka23=1;
sisa23=0;
}
angka24+=sisa23;
if(angka24==2)
{
angka24=0;
sisa24=1;
}
else
{
angka24=1;
sisa24=0;
}
angka25+=sisa24;
if(angka25==2)
{
angka25=0;
sisa25=1;
}
else
{
angka25=1;
sisa25=0;
}
angka26+=sisa25;
if(angka26==2)
{
angka26=0;
sisa26=1;
}
else
{
angka26=1;
sisa26=0;
}
angka27+=sisa26;
if(angka26==2)
{
angka26=0;
sisa26=1;
}
else
{
angka26=1;
sisa26=0;
}
angka27+=sisa26;
if(angka27==2)
{
angka27=0;
sisa27=1;
}
else
{
angka27=1;
sisa27=0;
}
angka28+=sisa27;
if(angka28==2)
{
angka28=0;
sisa28=1;
}
else
{
angka28=1;
sisa28=0;
}
angka29+=sisa28;
if(angka29==2)
{
angka29=0;
sisa29=1;
}
else
{
angka29=1;
sisa29=0;
}
angka30+=sisa29;
if(angka30==2)
{
angka30=0;
sisa30=1;
}
else
{
angka30=1;
sisa30=0;
}
angka31+=sisa30;
if(angka31==2)
{
angka31=0;
sisa31=1;
}
else
{
angka31=1;
sisa31=0;
}
angka32+=sisa31;
if(angka32==2)
{
angka32=0;
sisa32;
}
else
{
angka32=1;
sisa10=0;
}
}
/*mencetak hasil dari two's complement*/
printf("Dalam basis 2 (two's complement, 32 bit binary), bilangan tersebut =\n%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d\n", angka32,angka31,angka30,angka29,angka28,angka27,angka26,angka25,angka24,angka23,
angka22,angka21,angka20,angka19,angka18,angka17,angka16,angka15,angka14,angka13,
angka12,angka11,angka10,angka9,angka8,angka7,angka6,angka5,angka4,angka3
,angka2,angka1);
}
else
{
printf("digit yang anda masukkan lebih dari 9, silahkan masukkan kembali\n");
scanf("%d", &desimal);
}
getchar();
getchar();
return 0;
}
0 komentar:
Posting Komentar