כותב |
|
טל אורח
הצטרף / הצטרפה: 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 רשוּם
|
|
|
|
מערך של אינטים + תצתרך ליישם את כל פעולות החשבון שאתה
תשתמש איתן כפונקציות שעובדות אל המערך (אם מצביעים)
|
חזרה לתחילת העמוד |
|
|
inHaze משתמש פעיל
הצטרף / הצטרפה: 23 November 2006 מדינה: Israel
משתמש: מנותק/ת הודעות: 119
|
נשלח בתאריך: 18 December 2007 בשעה 14:06 | | IP רשוּם
|
|
|
|
אני הייתי מייצג את המספר במערך של char-ים, ככה אתה שם בכל תא רק ספרה אחת. אם אתה עושה מערך של int-ים, אפשר להתבלבל ולשים שם בכל תא מספר אחר של ספרות.
__________________ הבלוג שלי
|
חזרה לתחילת העמוד |
|
|
11010010110 פורומיסט על
הצטרף / הצטרפה: 23 April 2006
משתמש: מנותק/ת הודעות: 2621
|
נשלח בתאריך: 18 December 2007 בשעה 23:55 | | IP רשוּם
|
|
|
|
ניתן להשתמש ב int ים כמספרים בינאריים של 32 bit
|
חזרה לתחילת העמוד |
|
|
טל אורח
הצטרף / הצטרפה: 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 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 רשוּם
|
|
|
|
כן... התכוונתי ל-typedef. פשוט למדתי XHTML ואת הקטע עם ה-TYPEDEF ממש באותו הזמן, וזה איכשהו התערבב לי במח, ולכן כתבתי dectype (שזה גם לא נכון, אגב, יש לכתוב doctype).
מסתבר שבאמת אין אפשרות לעשות את מה שאני מנסה. הדבר היחיד שניתן לעשות זה להציג את המספרים בעזרת e, כלומר, להציג תוצאה כזאת בערך:
9.9999999999999999999999999999999e+2
וגם אם אפשר... טוב... אני מניח שזה לא שווה את זה... אני אוכל להסתדר בלי זה.
תודה רבה לכל מי שעזר לי
__________________ בברכה, טל.
תכנות באינטרנט: HTML, XHTML, Javascript, CSS, PHP
פיתוח תוכנות: C#, C
|
חזרה לתחילת העמוד |
|
|
אלצ'קו אחראי פורומים
ג2ר פ33תי
הצטרף / הצטרפה: 20 January 2006
משתמש: מנותק/ת הודעות: 609
|
נשלח בתאריך: 21 December 2007 בשעה 16:05 | | IP רשוּם
|
|
|
|
יש אפשרות, היא פשוט מסובכת. פיית'ון לדוגמה מטפלת במספרים מאוד גדולים.
|
חזרה לתחילת העמוד |
|
|