پنجشنبه, ۶ آبان ۱۴۰۰، ۰۶:۲۷ ب.ظ
تبدیل اعداد باینری و اعداد مبنای 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/ در حسابم ذر این آدرس بارگذاری شده
۰۰/۰۸/۰۶