נושאים פעיליםנושאים פעילים  הצגת רשימה של חברי הפורוםרשימת משתמשים  חיפוש בפורוםחיפוש  עזרהעזרה
  הרשמההרשמה  התחברותהתחברות RSS עדכונים
תיכנות
RSS UnderWarrior Forums : RSS תיכנות
נושא

נושא: [C]משתנים? ואם זה לא מספיק?

שליחת תגובהשליחת נושא חדש
כותב
הודעה << נושא קודם | נושא הבא >>
טל
אורח
אורח


הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין
הודעות: 12647
נשלח בתאריך: 17 December 2007 בשעה 23:41 | IP רשוּם
ציטוט טל

שלום שוב.

נניח שאני רוצה לייצג מספר גדול במיוחד במשתנה מסוג מספר שלם, משתנה מאד גדול, שהטווחים של int, long, double long וסוגי-טיפוסים אחרים לא מספיקים עבור האכסון שלו.

איך אני יכול להקצות זיכרון של 100 תאים, למשל, ולאכסן שם מספר שלם? לשם הדוגמא, נניח שאני רוצה לאכסן את המס' 100^10 (כלומר, 1 עם 100 אפסים אחריו) החל מכתובת 930 בזיכרון. 

תודה מראש, טל.

חזרה לתחילת העמוד הצג את כרטיס החבר של טל חפש הודעות אחרות של טל בקר בדף הבית של טל
 
11010010110
פורומיסט על
פורומיסט על
סמל אישי

הצטרף / הצטרפה: 23 April 2006
משתמש: מנותק/ת
הודעות: 2621
נשלח בתאריך: 18 December 2007 בשעה 00:11 | IP רשוּם
ציטוט 11010010110

מערך של אינטים + תצתרך ליישם את כל פעולות החשבון שאתה
תשתמש איתן כפונקציות שעובדות אל המערך (אם מצביעים)
חזרה לתחילת העמוד הצג את כרטיס החבר של 11010010110 חפש הודעות אחרות של 11010010110
 
inHaze
משתמש פעיל
משתמש פעיל
סמל אישי

הצטרף / הצטרפה: 23 November 2006
מדינה: Israel
משתמש: מנותק/ת
הודעות: 119
נשלח בתאריך: 18 December 2007 בשעה 14:06 | IP רשוּם
ציטוט inHaze

אני הייתי מייצג את המספר במערך של char-ים, ככה אתה שם בכל תא רק ספרה אחת. אם אתה עושה מערך של int-ים, אפשר להתבלבל ולשים שם בכל תא מספר אחר של ספרות.

__________________
הבלוג שלי
חזרה לתחילת העמוד הצג את כרטיס החבר של inHaze חפש הודעות אחרות של inHaze
 
11010010110
פורומיסט על
פורומיסט על
סמל אישי

הצטרף / הצטרפה: 23 April 2006
משתמש: מנותק/ת
הודעות: 2621
נשלח בתאריך: 18 December 2007 בשעה 23:55 | IP רשוּם
ציטוט 11010010110

ניתן להשתמש ב int ים כמספרים בינאריים של 32 bit
חזרה לתחילת העמוד הצג את כרטיס החבר של 11010010110 חפש הודעות אחרות של 11010010110
 
טל
אורח
אורח


הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין
הודעות: 12647
נשלח בתאריך: 20 December 2007 בשעה 16:08 | IP רשוּם
ציטוט טל

תודה לכולם על העזרה, אבל... אני רוצה לייצג מספר אחד גדול במיוחד, לא אלף מספרים קטנים.

חשבתי על רעיון אחר. שמעתי שניתן לשלב ASSEMBLER בתוכנית C, וב-ASSEMBLER קל מאד ליצור X בתים בזיכרון עבור ערך בודד. בכל אופן... מישהו יכול להראות לי איך ניתן לשלב קוד ASSEMBLER בתוכנית C? האם זה בכלל אפשרי?

תודה מראש, טל. 

חזרה לתחילת העמוד הצג את כרטיס החבר של טל חפש הודעות אחרות של טל בקר בדף הבית של טל
 
אלצ'קו
אחראי פורומים
אחראי פורומים
סמל אישי
ג2ר פ33תי

הצטרף / הצטרפה: 20 January 2006
משתמש: מנותק/ת
הודעות: 609
נשלח בתאריך: 21 December 2007 בשעה 09:22 | IP רשוּם
ציטוט אלצ'קו

מה קשור אסמבלי?
קוד:
asm mov eax, 5;

או
קוד:
asm {
    mov eax, 5
    mov ebx, eax
};


באסמבלי עדיין לא תוכל לבצע פעולות אריתמטיות על ה"משתנים" הללו, ועדיין תאלץ להמיר את המספר העשרוני לבינארי לבד.
חזרה לתחילת העמוד הצג את כרטיס החבר של אלצ'קו חפש הודעות אחרות של אלצ'קו
 
טל
אורח
אורח


הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין
הודעות: 12647
נשלח בתאריך: 21 December 2007 בשעה 12:45 | IP רשוּם
ציטוט טל

בנוגע להמרה מבינארי לעשרוני... זה לא נראה לי מסובך במיוחד.

בכל אופן, למה שלא אוכל לבצע פעולת ארימטיות עם הערכים האלו? ממש כמו שניתן לבצע פעולות עם משתנה בגודל 2 או 4 בתים אפשר לבצע פעולות עם ערכים גדולים יותר, לא?

אולי יש דרך לעשות דבר כזה בעזרת dectype ( לדוגמא: במקום לכתוב: dectype int INTEGER אולי ניתן לכתוב dectype 2_BYTES_VAR INTEGER או משהו דומה )?

חזרה לתחילת העמוד הצג את כרטיס החבר של טל חפש הודעות אחרות של טל בקר בדף הבית של טל
 
אלצ'קו
אחראי פורומים
אחראי פורומים
סמל אישי
ג2ר פ33תי

הצטרף / הצטרפה: 20 January 2006
משתמש: מנותק/ת
הודעות: 609
נשלח בתאריך: 21 December 2007 בשעה 14:35 | IP רשוּם
ציטוט אלצ'קו

באמת? בוא נראה איך לדוגמה ממירים מספר עשרוני להקסה: http://www.permadi.com/tutorial/numDecToHex
מסתבר שהשיטה היא לבצע חילוק (או ליתר דיוק מודולו, אבל זה שקול) של המספר העשרוני. התוצאה בהקסה היא רצף השאריות הללו (כלומר, סכום השאריות כפול 16 בחזקת המיקום שלהן במספר).

אבל מה? קצת קשה לך לעשות חילוק של המספר העשרוני העצום הזה, כל עוד לא הצלחת להכניס אותו לזיכרון (שבשביל זה אתה צריך להמיר אותו להקסה).

וזה מוביל אותנו לשאלה השנייה: למה שלא תוכל לבצע פעולות אריתמטיות עם המספרים האלה? ככה. כי אין למעבד שלך יכולת לבצע פעולה כזו. תצטרך לממש אותה לבד. במקרה של חיבור זה טריוויאלי, תחבר מילות מכונה, ובמקרה של הצפה, תוסיף את ה-carry לסכום של המילים הבאות. לממש חילוק... תהנה.

מה זה dectype אני לא יודע. אולי התכוונת ל-typedef, ואם כן, זה לא יעזור לך. typedef פשוט מאפשר לך לתת alias לטיפוס. הפעולות שניתן לעשות עליו הן עדיין אותן פעולות.
חזרה לתחילת העמוד הצג את כרטיס החבר של אלצ'קו חפש הודעות אחרות של אלצ'קו
 
talikag
משתמש מתחיל
משתמש מתחיל
סמל אישי

הצטרף / הצטרפה: 21 December 2007
מדינה: Israel
משתמש: מנותק/ת
הודעות: 3
נשלח בתאריך: 21 December 2007 בשעה 15:32 | IP רשוּם
ציטוט talikag

כן... התכוונתי ל-typedef. פשוט למדתי XHTML ואת הקטע עם ה-TYPEDEF ממש באותו הזמן, וזה איכשהו התערבב לי במח, ולכן כתבתי dectype (שזה גם לא נכון, אגב, יש לכתוב doctype).

מסתבר שבאמת אין אפשרות לעשות את מה שאני מנסה. הדבר היחיד שניתן לעשות זה להציג את המספרים בעזרת e, כלומר, להציג תוצאה כזאת בערך:

9.9999999999999999999999999999999e+2

וגם אם אפשר... טוב... אני מניח שזה לא שווה את זה... אני אוכל להסתדר בלי זה.

 

תודה רבה לכל מי שעזר לי



__________________
בברכה, טל.

תכנות באינטרנט: HTML, XHTML, Javascript, CSS, PHP

פיתוח תוכנות: C#, C

חזרה לתחילת העמוד הצג את כרטיס החבר של talikag חפש הודעות אחרות של talikag בקר בדף הבית של talikag
 
אלצ'קו
אחראי פורומים
אחראי פורומים
סמל אישי
ג2ר פ33תי

הצטרף / הצטרפה: 20 January 2006
משתמש: מנותק/ת
הודעות: 609
נשלח בתאריך: 21 December 2007 בשעה 16:05 | IP רשוּם
ציטוט אלצ'קו

יש אפשרות, היא פשוט מסובכת. פיית'ון לדוגמה מטפלת במספרים מאוד גדולים.
חזרה לתחילת העמוד הצג את כרטיס החבר של אלצ'קו חפש הודעות אחרות של אלצ'קו
 

אם ברצונך להגיב לנושא זה עליך קודם להתחבר
אם אינך רשום/ה כבר עליך להרשם

  שליחת תגובהשליחת נושא חדש
גרסת הדפסה גרסת הדפסה

קפיצה לפורום
אינך יכול/ה לשלוח נושאים חדשים בפורום זה
אינך יכול/ה להגיב לנושאים בפורום זה
אינך יכול/ה למחוק את הודעותיך ותגוביך בפורום זה
אינך יכול/ה לערוך את הודעותיך ותגובותיך בפורום זה
אינך יכול/ה לצור סקרים בפורום זה
אינך יכול/ה להצביע בסקרים בפורום זה