go实现整型的二进制转化的方法

go中已经实现了int->bin的转化函数,我这里只是化过程逻辑的实现,至于原理我就假设大家都知道了

本案例只考虑  int->bin  的转化

包含了正整数,负整数,0 的转化

package main
import (
  "fmt"
  "strconv"
)
//bin表示转化后的位数
func convertToBin(n int,bin int) string{
  var b string
  switch {
  case n==0:
    for i:=0;i<bin;i++{
      b+="0"
    }
  case n>0:
    //strcov.Itoa 将 1 转为 "1" , string(1)直接转为assic码
    for ; n>0;n/=2{
      b=strconv.Itoa(n%2)+b
    }
    //加0
    j:=bin-len(b)
    for i:=0;i<j;i++{
      b="0"+b
    }
  case n<0:
    n=n*-1
    // fmt.Println("变为整数:",n)
    s:=convertToBin(n,bin)
    // fmt.Println("bin:",s)
    //取反
    for i:=0;i<len(s);i++{
      if s[i:i+1]=="1"{
        b+="0"
      }else{
        b+="1"
      }
    }
    // fmt.Println("~bin :",b)
    //转化为整形,之后加1 这里必须要64,否则在转化过程中可能会超出范围
    n,err :=strconv.ParseInt(b,2,64)
    if err!=nil{
      fmt.Println(err)
    }
    //转为bin
    //+1
    b=convertToBin(int(n+1),bin)
  }
  return b
}
func main(){
  fmt.Println(
    convertToBin(5,8), //101
    convertToBin(13,8), //1101
    convertToBin(11111,8),
    convertToBin(0,8),
    convertToBin(1,8),
    convertToBin(-5,8),
    convertToBin(-11111,8),
  )
}

结果 :

5     13      11111      0    1      -5    -11111
00000101 00001101 10101101100111 00000000 00000001 11111011 1010010011001

比如-11111的转化:

变为整数: 11111
bin: 10101101100111
~bin : 01010010011000
结果:1010010011001

比如-1的转化:

变为整数: 1
bin: 00000001
~bin : 11111110
结果:11111111

总结

以上所述是小编给大家介绍的go实现整型的二进制转化的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

(0)

相关推荐

  • Golang如何交叉编译各个平台的二进制文件详解

    Golang交叉编译平台的二进制文件 熟悉golang的人都知道,golang交叉编译很简单的,只要设置几个环境变量就可以了 # mac上编译linux和windows二进制 CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build # linux上编译mac和windows二进制 CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go

  • CentOS 6.5 x64系统中安装MongoDB 2.6.0二进制发行版教程

    MongoDB的国外镜像访问非常慢,以至于选择MongoDB官网的在线安装很不靠谱.那么,我们可以选择安装MongoDB 2.6的二进制发布包. 下面我们在CentOS 6.5 x64系统上安装最新的MongoDB 2.6.0二进制发行版. 1.下载MongoDB 2.6.0二进制发行版 复制代码 代码如下: $ curl -O http://downloads.mongodb.org/linux/mongodb-linux-x86_64-2.6.0.tgz 2.解压MongoDB的压缩包 复制

  • go实现整型的二进制转化的方法

    go中已经实现了int->bin的转化函数,我这里只是化过程逻辑的实现,至于原理我就假设大家都知道了 本案例只考虑 int->bin  的转化 包含了正整数,负整数,0 的转化 package main import ( "fmt" "strconv" ) //bin表示转化后的位数 func convertToBin(n int,bin int) string{ var b string switch { case n==0: for i:=0;i&l

  • javascript十六进制及二进制转化的方法

    本文实例讲述了javascript十六进制及二进制转化的方法.分享给大家供大家参考.具体实现方法如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"

  • Java基于高精度整型实现fibonacci数列的方法

    本文以实例形式讲述了Java基于高精度整型实现fibonacci数列的方法,分享给大家供大家参考之用.具体方法如下: package com.java.learning.recursion; import java.math.*; public class MainClass { public static void main(String args[]){ for(int i = 0; i < 100; i++){ f(i+1); } } public static BigInteger f(

  • C#中将字符串转换为整型的三种解决方法总结

    在C#中,要将一个字符串或浮点数转换为整数,基本上有三种方法:(1)使用强制类型转换:(int)浮点数 (2)使用Convert.ToInt32(string)(3)使用int.Parse(string)或int.TryParse(string,out int) 在实际使用时,当要转换的字符串或数字带有小数时,发现它们有以下区别:(1)方法一:截断  方法二:四舍五入int a=(int)2.8; //结果为2int b=Convert.ToInt32(2.8); //b的值为3(2)int.P

  • 详解python的二进制转化模块

    在pyton中,通过struct模块来对二进制进行转换,主要包括两大类函数,即用于打包的pack和用于解包的unpack. 其中,struct.pack的输入格式为struct.pack(format, v1, v2, ...),其中format为格式字符串,v1,v2..为将要转成bytes的字符. 例如 >>> import struct >>> struct.pack('i', 15) b'\x0f\x00\x00\x00' >>> struct

  • python3中int(整型)的使用教程

    Python3支持三种不同的数值类型: 整型(int)--通常被称为是整型或整数,可以是正整数或负整数,不带小数点.Python3整型是没有限制大小的,可以当做long类型使用, 但实际上由于机器内存的有限,我们使用的整数是不可能无限大的. 浮点型(float)--浮点型数字由整数部分和小数部分组成,浮点型也可以使用科学计数法表示(2.5e2 = 2.5 x 102 = 250) 复数(complex)--复数由实数部分和虚数部分构成,可以用a + bj,或者complex(a,b)表示,复数的

  • JS长整型精度问题实例分析

    本文实例分析了一个JS长整型精度问题.分享给大家供大家参考.具体分析如下: 问题描述: 后台有一个脚本功能,可编写脚本动态调用Java代码 复制代码 代码如下: importClass(com.ztgame.center.controller.api,P360ApiController);  var roleId = 10214734953631045;  p360ApiController.notice(roleId, 4); 脚本执行成功,但运行结果与设定不一样,此人没有收到邮件 查看日志 

  • 深入分析python中整型不会溢出问题

    本次分析基于 CPython 解释器,python3.x版本 在python2时代,整型有 int 类型和 long 长整型,长整型不存在溢出问题,即可以存放任意大小的整数.在python3后,统一使用了长整型.这也是吸引科研人员的一部分了,适合大数据运算,不会溢出,也不会有其他语言那样还分短整型,整型,长整型...因此python就降低其他行业的学习门槛了. 那么,不溢出的整型实现上是否可行呢? 不溢出的整型的可行性 尽管在 C 语言中,整型所表示的大小是有范围的,但是 python 代码是保

  • C++中字符串与整型及浮点型转换全攻略

    目录 一.string 和 char [] 1. string 转 char [] 2. char [] 转 string 二.char [] 与数字互转 1. char [] 转整型和浮点型 2. 整型和浮点型 转char [] 3. 整型转 char [] (特殊函数实现) 首先请出今日主角:stdlib.h (YYDS) 这个库包含有随机数,abs等许多通用函数,当然也有类型的转换 下面我们一点点来看如何完成格式转换 一.string 和 char [] 1. string 转 char

  • C语言的合法标识符与整型详解

    目录 头文件 常量 变量 命名规范 合法的浮点数 小数与指数 char与八进制 以下通过代码来举例 sizeof() 数据溢出 整型 面向过程 流程 入口.出口 注释 进制转换 总结 首先我们来介绍一下,一开始学习c语言最先遇到的头文件是什么 头文件 又名工具箱 提供一系列方法(工具) #include <stdio.h> #include "stdio.h" <>: 直接在系统目录进行查找 找不到会直接报错 " ": 先在当前目录下进行查找

随机推荐