最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

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

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

    注意:    二進(jìn)制數(shù)也有小數(shù)點(diǎn),區(qū)別是小數(shù)點(diǎn)左邊的指數(shù)為正數(shù),右邊的指數(shù)為負(fù)數(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  {
    // 獲取二進(jìn)制字符字符串
    // 使用前可使用正則校驗(yàn)    [0-1]|[0-1].[0-1]
    var text = val
    // 指數(shù) v1
    var v1 float64 = 0
    var  len  =  len(text)
    // 查看是否包含小數(shù)點(diǎn)
    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++
    }
    // 這里有個(gè)BUG,未判斷得出的十進(jìn)制數(shù)小數(shù)點(diǎn)后面有幾位小數(shù)
    return strconv.FormatInt(int64(result), 10)
}

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

/*
   十進(jìn)制轉(zhuǎn) 二進(jìn)制的方法  十進(jì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ù)字是否是負(fù)數(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ù),拼接二進(jìn)制數(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]))
    }
    // 如果是負(fù)數(shù),則增加符號(hào)
    if bool {
        finalResult = fmt.Sprint("-",finalResult)
    }
    return finalResult
}

總結(jié)

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

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

相關(guān)文章

  • golang之資源釋放/異常錯(cuò)誤處理解析

    golang之資源釋放/異常錯(cuò)誤處理解析

    這篇文章主要為大家介紹了golang之資源釋放/異常錯(cuò)誤處理解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2024-01-01
  • 一篇文章學(xué)會(huì)GO語(yǔ)言中的變量

    一篇文章學(xué)會(huì)GO語(yǔ)言中的變量

    Go語(yǔ)言是靜態(tài)類型語(yǔ)言,因此變量有明確類型的,編譯器也會(huì)檢查變量類型的正確性,下面這篇文章主要給大家介紹了關(guān)于GO語(yǔ)言中變量的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-07-07
  • 深入學(xué)習(xí)Golang的流程控制

    深入學(xué)習(xí)Golang的流程控制

    Go 語(yǔ)言是一門(mén)現(xiàn)代化的編程語(yǔ)言,以其簡(jiǎn)潔高效、并發(fā)安全等特點(diǎn)被越來(lái)越多的開(kāi)發(fā)者所使用。本文將深入探討 Go 語(yǔ)言中的流程控制,包括條件語(yǔ)句、循環(huán)語(yǔ)句以及控制語(yǔ)句等方面
    2023-05-05
  • Go打包靜態(tài)文件的兩種方式

    Go打包靜態(tài)文件的兩種方式

    使用 Go 開(kāi)發(fā)應(yīng)用的時(shí)候,有時(shí)會(huì)遇到需要讀取靜態(tài)資源的情況,如果不打包處理這種靜態(tài)文件:發(fā)布單獨(dú)掛載這種靜態(tài)文件相對(duì)比較麻煩,就有人會(huì)想辦法把靜態(tài)資源文件打包進(jìn) Go 的程序文件中,下面介紹兩種打包方式:go-bindata、go:embed,需要的朋友可以參考下
    2024-04-04
  • Go語(yǔ)言中init函數(shù)和defer延遲調(diào)用關(guān)鍵詞詳解

    Go語(yǔ)言中init函數(shù)和defer延遲調(diào)用關(guān)鍵詞詳解

    這篇文章主要介紹了Go語(yǔ)言中init函數(shù)和defer延遲調(diào)用關(guān)鍵詞,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-03-03
  • Go?項(xiàng)目目錄布局保姆級(jí)教程

    Go?項(xiàng)目目錄布局保姆級(jí)教程

    這篇文章主要為大家介紹了Go?項(xiàng)目目錄布局保姆級(jí)教程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-12-12
  • Golang中間件設(shè)計(jì)示例詳解

    Golang中間件設(shè)計(jì)示例詳解

    這篇文章主要介紹了Golang中間件設(shè)計(jì)示例,中間件是在HTTP請(qǐng)求處理過(guò)程中,對(duì)請(qǐng)求進(jìn)行處理的一種模式,中間件可以在請(qǐng)求到達(dá)處理器之前或之后對(duì)請(qǐng)求進(jìn)行攔截,修改或者增強(qiáng),同時(shí)可以對(duì)響應(yīng)進(jìn)行處理,需要的朋友可以參考下
    2023-05-05
  • 詳解Go語(yǔ)言中的作用域和變量隱藏

    詳解Go語(yǔ)言中的作用域和變量隱藏

    這篇文章主要為大家介紹了Go語(yǔ)言中的作用域和變量隱藏,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Go語(yǔ)言有一定的幫助,感興趣的小伙伴可以了解一下
    2022-04-04
  • 詳解Go?依賴管理?go?mod?tidy

    詳解Go?依賴管理?go?mod?tidy

    這篇文章主要為大家介紹了詳解Go?依賴管理?go?mod?tidy,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-10-10
  • Golang定時(shí)任務(wù)框架GoCron的源碼分析

    Golang定時(shí)任務(wù)框架GoCron的源碼分析

    本文主要介紹了Golang定時(shí)任務(wù)框架GoCron的源碼分析,原生的gocron存在一些問(wèn)題,如任務(wù)列表維護(hù)不當(dāng)、并發(fā)操作不可預(yù)測(cè)等,經(jīng)過(guò)改進(jìn)的gocron解決了這些問(wèn)題,感興趣的可以了解一下
    2025-03-03

最新評(píng)論

印江| 酉阳| 会宁县| 南投县| 罗源县| 南宫市| 城口县| 天镇县| 九江县| 阳谷县| 韶关市| 崇州市| 甘谷县| 高雄市| 商南县| 巫溪县| 梅州市| 金溪县| 辽中县| 深水埗区| 健康| 右玉县| 腾冲县| 监利县| 闸北区| 阿克陶县| 安多县| 阳谷县| 叶城县| 巨野县| 广平县| 越西县| 响水县| 平罗县| 东海县| 兴宁市| 新营市| 肥东县| 宁陕县| 翼城县| 泰安市|