js十進制轉換二進制


平常使用的話用toString(2),或者parseInt(要轉換的數字,2)便可轉換為二進制。這里用原生代碼實現一下十進制轉二進制。

<body>
    <input id="dec-number" type="number" placeholder="輸入一個十進制非負數">
    <button id="trans-btn">轉化為二進制</button>
    <p id="result">運算結果</p>
    <script>
        function trans(){
            var dec_number=document.getElementById("dec-number").value;//獲得輸入的值
            var str=dec_number+"";//將值轉換為字符串
            if(isNaN(Number(str))){//判斷輸入值是否是數字(因為input標簽已經確定type為number,所以這個判斷是不必要的)
                console.log("輸入一個十進制非負數錯誤");
                mistake();
            }else if(dec_number==0){//判斷輸入值是否等於零
                console.log("輸入十進制為0");
                zero();
            }else if(str.indexOf(".")==-1){//判斷輸入值是否是整數
                console.log("所輸入數據為十進制非負整數")
                integer();
            }else if(str.indexOf(".")!=-1){//判斷輸入值是否是小數
                console.log("所輸入數據為實際值非負小數");
                decimal();
            }
        }
        function mistake(){
            document.getElementById("result").innerHTML="所輸入十進制非負數錯誤";
        }
        function zero(){
            document.getElementById("result").innerHTML=0;
        }
        function integer(){
            var dec_number=document.getElementById("dec-number").value;//獲取值
            var quotient=dec_number;//用於儲存商的值
            var remainder;//用於存儲余數
            var bin_array=[];//用於儲存余數並編排
            while(quotient!=1){
                remainder=quotient%2;
                quotient=Math.floor(quotient/2);
                bin_array.unshift(remainder);//將得到的余數插入數組的前排
            }
            bin_array.unshift(1);
            document.getElementById("result").innerHTML=(bin_array.join(""));
        }
        function decimal(){
        
            var dec_number=document.getElementById("dec-number").value;
            var int_number=dec_number.toString().substring(0,((dec_number.toString()).indexOf(".")));//獲取小數點之前的數字,即整數部分
            var decimal_number=parseFloat("0"+"."+dec_number.substring((((dec_number.toString()).indexOf("."))+1)));//獲取小數點之后的數字,即小數部分
            var int_quotient=int_number;//用於儲存整數部分的商的值
            var int_remainder;//用於存儲整數部分的余數
            var int_bin_array=[];//用於儲存整數部分的余數並編排
            var dec_product;//用於儲存小數部分的乘積的值
            var dec_difference=decimal_number;//用於儲存小數部分的差的值
            var dec_bin_array=[];//用於儲存小數部分的商並編排
            if(dec_number>1){//小數大於1時
            //整數部分的二進制轉換
                while(int_quotient!=1){
                    int_remainder=int_quotient%2;
                    int_quotient=Math.floor(int_quotient/2);
                    int_bin_array.unshift(int_remainder);
                }
                int_bin_array.unshift(1);
                var int_bin_number=int_bin_array.join("");
                //小數部分的二進制轉換
                var i=0;
                while(dec_difference!=0||i<20){//i<20考慮的是無限小數的情況,限定只允許20位小數
                    dec_product=Math.floor(dec_difference*2);
                    if((dec_difference*2)<1){
                        dec_difference=dec_difference*2;
                    }else{
                        dec_difference=dec_difference*2-1;
                    }
                    dec_bin_array.push(dec_product);
                    i++;
                }
                var result=Number(int_bin_number+"."+dec_bin_array.join(""));
            }else{
                var i=0;
                while(dec_difference!=0||i<20){//i<20考慮的是無限小數的情況,限定只允許20位小數
                    dec_product=Math.floor(dec_difference*2);
                    if((dec_difference*2)<1){
                        dec_difference=dec_difference*2;
                    }else{
                        dec_difference=dec_difference*2-1;
                    }
                    dec_bin_array.push(dec_product);
                    i++;
                }
                var result=Number("0"+"."+dec_bin_array.join(""));
            }
            document.getElementById("result").innerHTML=result;
        }
        document.getElementById("trans-btn").addEventListener("click",trans);
        // 實現當點擊轉化按鈕時,將輸入的十進制數字轉化為二進制,並顯示在result的p標簽內
    </script>
</body>


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM