日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

C#实现10进制转2进制

發(fā)布時(shí)間:2024/8/24 综合教程 34 生活家
生活随笔 收集整理的這篇文章主要介紹了 C#实现10进制转2进制 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

這幾天在復(fù)習(xí)計(jì)算機(jī)原理,看到二進(jìn)制忽然想到二進(jìn)制轉(zhuǎn)10進(jìn)制的公式,然后轉(zhuǎn)念一想10進(jìn)制轉(zhuǎn)二進(jìn)制的公式好像沒印象,那索性自己寫出來。

結(jié)果學(xué)渣的我發(fā)現(xiàn),并不能寫出來!什么數(shù)列,對數(shù),xx函數(shù)忘得一干二凈,而且需要有需要判斷的地方,于是崩潰了,以前代數(shù)題并沒寫過條件啊~

索性用C#代碼搞出來(雖然在C#里有方法直接轉(zhuǎn)換)

二進(jìn)制值 10進(jìn)制值 公式
0 0 0
1 1 1
10 2 f(2)=10^1=10
11 3 f(3):比log?3最小的整數(shù)位1,記錄10^1,并3-(2^1)=1,f(1)=1,則最終結(jié)果為10^1+f(1)=10+1=11
100 4 f(4):log?4=2,整數(shù),直接返回10^2
101 5 f(5):比log?5最小的整數(shù)位2,記錄10^2,并5-(2^2)=1,f(1)=1,則最終結(jié)果為10^2+f(1)=100+1=101
110 6 f(6):比log?6最小的整數(shù)位2,記錄10^2,并6-(2^2)=2,f(2)=10,則最終結(jié)果為10^2+f(2)=100+10=110
111 7 ………………
1000 8 ………………
1001 9 ………………
1010 10 ………………
1011 11 ………………
1100 12 ………………
1101 13 ………………
1110 14 ………………
1111 15 f(15):比log?15最小的整數(shù)位3,記錄10^3,并15-(2^3)=7,f(7)=111,則最終結(jié)果為10^3+f(7)=1000+111=1111
10000 16 f(16):比log?6最小的整數(shù)位4,整數(shù),直接返回10^4

公式是這樣子的。 假如求10進(jìn)制數(shù)n的二進(jìn)制,先求以2為底的n的對數(shù)log?N,判斷l(xiāng)og?N是否為為整數(shù),如果為整數(shù)直接返回10^log?N,否則求出比log?N最小的整數(shù)t(如1.001取1,2.02取2,3.9取3)。求出并記錄10^t,然后將n減去2^t并重復(fù)執(zhí)行以上步驟,返回的值與記錄的10^t相加。

以上我們設(shè)這個(gè)函數(shù)為f(n);

貼代碼,無疑,用了遞歸~

  private double DecimalToBinarySystem(int decimalNumber)
        {
            double standard = 0;
            if (decimalNumber==0)
            {
                return 00;
            }
            if (decimalNumber==1)
            {
                return 01;
            }
            var doubleValue = (double) decimalNumber;
            var logarithm = Math.Log(doubleValue,2 );
            var logFormat = Math.Truncate(logarithm);
                        var baseNum = Math.Pow(10, logFormat);
            if (logarithm.Equals(logFormat))
            {
                return baseNum;
            }

            var leftNumber = doubleValue - Math.Pow(2, logFormat);
            return baseNum + DecimalToBinarySystem((int)leftNumber);


        }

僅測試過大于等于0的整數(shù),負(fù)數(shù)和小數(shù)未測試。

只是樂于思考一下,拋磚引玉歡迎指正

總結(jié)

以上是生活随笔為你收集整理的C#实现10进制转2进制的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。