פורסם 2015 באפריל 410 שנים שלום לכולם.התבקשתי לרשום תוכנית שתקבל מספר בינארי ותדפיס הקסדצימאליהתוכנית צריכה לקלוט את המספר כמשתנה שלם int ולהדפיס את הייצוג ההקסדצימלי הפוך.רשמתי את התוכנית הבאה#include<stdio.h>int main(){long int num_b,num_h=0,j=1,sherit;printf("Enter any number any binary number: ");scanf("%ld",&num_b);while(num_b!=0){sherit=num_b%10;num_h+=sherit*j;j=j*2;num_b/=10;}printf(" hexadecimal: %lX",num_h);return 0;כשאני מכניס 11111111 התוכנית אכן מדפיסה ff אך שזה מעל 8 ספרות נוצר בלאגן.אשמח לעזרה. נערך 2015 באפריל 510 שנים על-ידי Sagi Shnek
פורסם 2015 באפריל 510 שנים שלום וברוך הבא לפורום.תערוך בבקשה את ההודעה הראשונה ותעטוף את הקוד בתגית קוד (לחץ על עריכה > מצב מתקדם, בחר את הקוד ולחץ על כפתור עם ציור #) כדי שיהיה יותר קריא.לשאלתך: כמה ספרות ניסית להכניס, ובאיזו קומפיילר / סביבת פיתוח אתה משתמש? נערך 2015 באפריל 510 שנים על-ידי שניצל
פורסם 2015 באפריל 510 שנים בפלטפורמות מסויימות long int הוא רק 32 ביט, שאומר שהוא יכול להכיל רק עד בערך 10 או 11 ספרות. אם אתה מנסה להכניס מספר יותר גדול מזה אתה תקבל גלישה נומרית.תנסה להחליף את ה-long int ב-long long int או ב-int64_t.לחילופין, תקלוט את המספר בתור מחרוזת או בתור לולאה שקוראת תו אחר תו.(או שתוותר וזהו, תלוי מה הדרישות המדוייקות של התרגיל...) נערך 2015 באפריל 510 שנים על-ידי שניצל
פורסם 2015 באפריל 510 שנים מחבר #include<stdio.h>int main(){long long int num_b,num_h=0,j=1,sherit;printf("please enter binary number <consist of 1 or 0>: ");scanf("%lld",&num_b);while(num_b!=0){sherit=num_b%10;num_h+=sherit*j;j=j*2;num_b/=10;}printf(" hexadecimal: %lX",num_h);return 0;}תודה רבה עכשיו זה עובד מצויין.שאלה נוספת:אם אני רושם 1111111111111110אני מקבל FFFEאני רוצה לבצע רוורס כלומר להכניס עדיין אותם ספרות אבל לקבל את זה הפוך EFFF
פורסם 2015 באפריל 510 שנים תעביר את המספר ההקסהדצימלי למחרוזת ואז תהפוך אותה.זה לא נכון.להפוך את הביטים ייתן ככה:0xFE = 1111 1110אבל 0x7F = 0111 1111ולא 0xEF.לא ברור אם התכוונת להדפיס את הניבלים מהסוף להתחלה או את הבתים. בכל אופן הפתרון כמעט זהה לגמרי.כדי להדפיס לא הפוך אין צורך בלעשות כלום בעצם.דוגמא:#include <stdio.h>void main(){ long long num; const int nof_bits = sizeof(long long) * 8; scanf("%d", &num); //not iverted printf("0x%X\n", num); //inverted printf("0x"); long long mask = 0xf; for (int nibble_ndx = 0; nibble_ndx < (nof_bits >> 2); ++nibble_ndx, mask = mask << 4) { printf("%X", num&mask); } printf("\n");}שים לב שאם אתה מדפיס הפוך אז בעצם יש לך הרבה אפסים שהם חשובים כי ה most significant nibble שלך הוא כביכול ה lsbs. אם הם משמאל אין להם חשיבות אבל מימין כן. נערך 2015 באפריל 510 שנים על-ידי yshekel
פורסם 2015 באפריל 610 שנים מחבר אני עדיין ממש בהתחלה של הלמידה ועוד לא התקדמתי לחומר שאתה רשמת בקוד שלך.אני רוצה לעשות שימוש בתנאים ולולאות בלבד כי להפוך את המספר כלומר:להכניס 11111110111111במצב הזה אני אמור לקבל FFEFאך אני רוצה לקבל במקום FEFF/..
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.