تبدیل اعداد باینری و اعداد مبنای 10 بسیار بزرگ به یکدیگر
در این حالت شما دیگران نگران اندازه اعداد برای تبدیل آنها با یکدیگر نخواهید بود مثلا در متلب شما نمی توانید اعدادی بزرگتر از 53 را به شکل باینری دربیاورید، ولی با استفاده از این دو تابع و تولباکس vpi آن را در ادامه قرار می دم می توانید از این محدودیت خارج بشید.
کد تابع biNum=dec2binVeryLong(decNum)
function biNum=dec2binVeryLong(decNum) basN=vpi(2); outNum=decNum/basN; biNum=rem(decNum,basN); while(true) if outNum==1 || outNum==0 break; end biNum(end+1)=rem(outNum,basN); outNum=floor(outNum/basN); end biNum(end+1)=outNum; biNum=biNum(end:-1:1); biNum=vpi2bin(biNum)'; end % [biNum,decNumBack]=dec2binVeryLong(10^301)
نمونه کد فراخوانی
dNum=['657666666666666666666657688886774564556398567567890656708946809546547809546485945687934583939'... '83453897345876874765464567896546896456458979879456489564574997645646548994597797974564894534'] biNum=dec2binVeryLong(vpi(dNum))
نمونه خروجی
dNum = 65766666666666666666665768888677456455639856756789065670894680954654780954648594568793458393983453897345876874765464567896546896456458979879456489564574997645646548994597797974564894534 biNum = 11110111101001001111010101100101110011011000111010110010001101011100101111000011101001110100000110001010101101100001001010000100100100010100110011011111000101010000001111110110010100100111001111111101010001000010111111011110001010001111011001110110100100111110010001110010010101101010110110100111101001101100000101111110111110011100110011101000001010010011001111001100101000100101100010101110100101100000101011011010101100011110110000010111111000010000100001001001001010000111000010001110110001000110000101001010101100011101001100111100000100111110010101010101110011010000111100011111000000001010110111011101000110 >>
کد تابع decNum=bin2decVeryLong(biNum)
function decNum=bin2decVeryLong(biNum) biVect=biNum(:)'; binSiz=max(size(biVect)); baseN=vpi(2); binare= power(baseN,[0:binSiz-1]); binare=binare(end:-1:1); selct=(biVect=='1'); decNum=sum(binare(selct')); end
کد فراخوانی این تابع
biNum=['1111011110100100111101010110010111001101100011101011001000110101110010111100001110100111010000011'... '00010101011011000010010100001001001000101001100110111110001010100000011111101100101001001110011111111010100010000101111110111'... '1000101000111101100111011010010011111001000111001001010110101011011010011110100110110000010111111011111001110011001110100000'... '101001001100111100110010100010010110001010111010010110000010101101101010110001111011000001011111100001000010000100100100101000011100001000'... '1110110001000110000101001010101100011101001100111100000100111110010101010101110011010000111100011111000000001010110111011101000110'] dNum=bin2decVeryLong((biNum))
نمونه خروجی این تابع
biNum = 11110111101001001111010101100101110011011000111010110010001101011100101111000011101001110100000110001010101101100001001010000100100100010100110011011111000101010000001111110110010100100111001111111101010001000010111111011110001010001111011001110110100100111110010001110010010101101010110110100111101001101100000101111110111110011100110011101000001010010011001111001100101000100101100010101110100101100000101011011010101100011110110000010111111000010000100001001001001010000111000010001110110001000110000101001010101100011101001100111100000100111110010101010101110011010000111100011111000000001010110111011101000110 dNum = 65766666666666666666665768888677456455639856756789065670894680954654 780954648594568793458393983453897345876874765464567896546896456458979879 456489564574997645646548994597797974564894534
در ضمن شما برای کار با اعداد بزرگ در حوزه پردازش های مرتبط با اعداد بزرگ می توانید از تولباکس vpi استفاده کنید .
همچنین کد این توابع در سایت https://www.mathworks.com/ در حسابم ذر این آدرس بارگذاری شده