欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Go語言實現(xiàn)二進制與十進制互轉(zhuǎn)的示例代碼

 更新時間:2023年05月04日 15:14:54   作者:往之不諫  
這篇文章主要和大家詳細介紹了Go語言中實現(xiàn)二進制與十進制互相轉(zhuǎn)換的示例代碼,文中的代碼簡潔易懂,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下

最近在備考軟考的軟件設(shè)計師考試,在學(xué)習(xí)過程遇到很多于計算機基礎(chǔ)計算相關(guān)的知識點,正好最近在學(xué)Go語言,所以就把計算的方式用Go語言實現(xiàn)一下。
當(dāng)前還在學(xué)習(xí)過程中,如有問題,歡迎大佬們指正

二進制轉(zhuǎn)十進制

/*
   轉(zhuǎn)換規(guī)則:   11001 從末尾到開頭,以2為底數(shù),從0開始遞增為指數(shù) * 二進制數(shù),然后將這些二進制數(shù)相加即可得出10進制數(shù)
    11001 = 1 * 2^0  + 0 * 2^1  + 0 * 2^2  + 1 * 2^3  + 1 * 2^4   =  1 + 0 + 0 + 8 + 16 = 25
    這個規(guī)則也適用于其他進制轉(zhuǎn)換為十進制,只需要把底數(shù)替換為相應(yīng)的進制數(shù)即可,這種方法叫做  “按權(quán)展開法"

    注意:    二進制數(shù)也有小數(shù)點,區(qū)別是小數(shù)點左邊的指數(shù)為正數(shù),右邊的指數(shù)為負數(shù)
    例如:    11.01 =  1 * 2^-2   + 0 * 2^-1 +  1 * 2^0  + 1 * 2^1  = 0.25 + 0 + 1 + 2 = 3.25
*/
func binaryToDecimal(val string) string  {
    // 獲取二進制字符字符串
    // 使用前可使用正則校驗    [0-1]|[0-1].[0-1]
    var text = val
    // 指數(shù) v1
    var v1 float64 = 0
    var  len  =  len(text)
    // 查看是否包含小數(shù)點
    contains := strings.Contains(text, ".")
    if contains {
        index := strings.LastIndex(text, ".")
        if index == (len -1) {
            text = text[0 : len-1]
        } else {
            v3  :=len - index
            v3--
            v1 = float64(0 - v3)
        }
    }
    fmt.Println(v1)
    // 結(jié)果
    var result float64
    for i := len -1; i >= 0; i-- {
        u := string(text[i])
        if u == "." {
            continue
        }
        v2,error := strconv.ParseFloat(u, 64)
        if error != nil {
            fmt.Println("轉(zhuǎn)換失敗",error)
        }
        // 乘數(shù)
        pow := math.Pow(2, v1)
        // 數(shù)值累加
        result = result + (v2 * pow)
        // 指數(shù)遞增
        v1++
    }
    // 這里有個BUG,未判斷得出的十進制數(shù)小數(shù)點后面有幾位小數(shù)
    return strconv.FormatInt(int64(result), 10)
}

十進制轉(zhuǎn)二進制

/*
   十進制轉(zhuǎn) 二進制的方法  十進制數(shù)除以2取余數(shù)法
 */
func  decimalToBinary(val string) string  {
    number, err := strconv.ParseInt(val, 10, 64)
    if err != nil {
        fmt.Println("數(shù)字轉(zhuǎn)換失敗",err)
        return ""
    }

    // 查看數(shù)字是否是負數(shù)
    var bool  = number < 0

    if bool {
        number = 0 -number
    }

    var result  = ""
    for true {
        if number == 1 {
            result = fmt.Sprint(result,number)
            break
        }
        //// 除數(shù)
        var v1 = number / 2
        //// 余數(shù)
        var v2 = number % 2
        // 取余數(shù),拼接二進制數(shù)
        result = fmt.Sprint(result,v2)
        number = v1
    }
    
    // 反轉(zhuǎn)字符串
    var finalResult  = ""
    var len = len(result)
    for i := len - 1; i >= 0; i-- {
        finalResult = fmt.Sprint(finalResult,string(result[i]))
    }
    // 如果是負數(shù),則增加符號
    if bool {
        finalResult = fmt.Sprint("-",finalResult)
    }
    return finalResult
}

總結(jié)

  • R進制轉(zhuǎn)十進制數(shù)的方法叫做按權(quán)展開法,這個權(quán)指的是指數(shù)
  • 指數(shù)在小數(shù)點右邊為負數(shù),左邊為正數(shù) 例如 二進制數(shù) "1110.01" 的指數(shù)依次為 -2 -1 0 1 2 3

到此這篇關(guān)于Go語言實現(xiàn)二進制與十進制互轉(zhuǎn)的示例代碼的文章就介紹到這了,更多相關(guān)Go語言二進制與十進制互轉(zhuǎn)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Go異步任務(wù)解決方案之Asynq庫詳解

    Go異步任務(wù)解決方案之Asynq庫詳解

    需要在Go應(yīng)用程序中異步處理任務(wù)? Asynq,簡單高效的任務(wù)隊列實現(xiàn),下面這篇文章主要給大家介紹了關(guān)于Go異步任務(wù)解決方案之Asynq庫的相關(guān)資料,需要的朋友可以參考下
    2023-02-02
  • golang實現(xiàn)微信支付v3版本的方法

    golang實現(xiàn)微信支付v3版本的方法

    這篇文章主要介紹了golang實現(xiàn)微信支付v3版本的方法,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-03-03
  • 分析Go語言中CSP并發(fā)模型與Goroutine的基本使用

    分析Go語言中CSP并發(fā)模型與Goroutine的基本使用

    我們都知道并發(fā)是提升資源利用率最基礎(chǔ)的手段,尤其是當(dāng)今大數(shù)據(jù)時代,流量對于一家互聯(lián)網(wǎng)企業(yè)的重要性不言而喻。串流顯然是不行的,尤其是對于web后端這種流量的直接載體。并發(fā)是一定的,問題在于怎么執(zhí)行并發(fā)。常見的并發(fā)方式有三種,分別是多進程、多線程和協(xié)程
    2021-06-06
  • 基于Golang編寫貪吃蛇游戲

    基于Golang編寫貪吃蛇游戲

    這篇文章主要為大家學(xué)習(xí)介紹了Golang如何基于終端庫termbox-go做個功能較簡單的貪吃蛇游戲,文中的示例代碼講解詳細,具有一定的學(xué)習(xí)價值
    2023-07-07
  • Gin框架之參數(shù)綁定的實現(xiàn)

    Gin框架之參數(shù)綁定的實現(xiàn)

    為了能夠更方便的獲取請求相關(guān)參數(shù),提高開發(fā)效率,本文主要介紹了Gin框架之參數(shù)綁定的實現(xiàn),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-12-12
  • 使用Go語言實現(xiàn)Yaml編碼和解碼的方法詳解

    使用Go語言實現(xiàn)Yaml編碼和解碼的方法詳解

    在這篇文章中,我們將介紹如何使用Go語言編寫代碼來實現(xiàn)Yaml編碼和解碼,文中有詳細的代碼示例供大家參考,對大家的學(xué)習(xí)和工作有一定的幫助,需要的朋友可以參考下
    2023-11-11
  • golang使用sync.Once實現(xiàn)懶加載的用法和坑點詳解

    golang使用sync.Once實現(xiàn)懶加載的用法和坑點詳解

    這篇文章主要為大家詳細介紹了golang使用sync.Once實現(xiàn)懶加載的用法和坑點,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-11-11
  • go語法入門any類型的使用場景示例詳解

    go語法入門any類型的使用場景示例詳解

    這篇文章主要為大家介紹了go語法入門any類型的使用場景示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-09-09
  • Golang Http請求返回結(jié)果處理

    Golang Http請求返回結(jié)果處理

    本文主要介紹了Golang Http請求返回結(jié)果處理,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • Go語言斷言和類型查詢的實現(xiàn)

    Go語言斷言和類型查詢的實現(xiàn)

    Go語言變量類型包含基礎(chǔ)類型和復(fù)合類型,類型斷言一般是對基礎(chǔ)類型的處理,本文主要介紹了Go語言斷言和類型查詢的實現(xiàn),感興趣的可以了解一下
    2024-01-01

最新評論