进制与转换

常见进制

  • 二进制:只有0和1,Go中不能直接使用二进制表示整数
  • 八进制:0-7,以数字0开头
  • 十进制:0-9
  • 十六进制:0-9以及A-F,以0X开头,A-F以及X不区分大小写 #### 任意进制转换为十进制

二进制转十进制:从最低位开始,每个位上数乘以2(位数-1)次方然后求和 > 1011 = 1*20 + 1*21 + 0*22 + 1*23 = 11

八进制转十进制:从最低位开始,每个位上数乘以8(位数-1)次方然后求和 > 0123 = 3*80 + 2*81 + 1*82 + 0*83 = 83

其他进制转十进制同理。

十进制转其他进制

十进制转二进制:不断除以2,直到0为止,余数倒过来即可,如图:

十进制转八进制:不断除以8,直到0为止,余数倒过来即可。

十进制转十六进制:同上

其他进制互转

  • 二进制转换八进制:将二进制数从低位开始,每三位一组,转换成八进制数即可
  • 二进制转十六进制:将二进制数从低位开始,每四位一组,转换成十六进制数即可
  • 八进制转换二进制:将八进制数每1位转换成一个3位的二进制数(首位0除外)
  • 十六进制转二进制:将十六进制每1位转换成对应的一个4位的二进制数即可

反码补码

对于有符号数而言,二进制的最高为是符号位:0表示正数,1表示负数。

比如 1在二进制中:

1
2
1  二进制位:0000  0001
-1 二进制位:1000 0001

正数的原码、反码、补码都一样,负数的反码=原码符号位不变,其他位取反,补码是反码+1

1
2
3
4
         1              -1
原码 0000 0001 1000 0001
反码 0000 0001 1111 1110
补码 0000 0001 1111 1111

常见理解: - 0的反码补码都是0 - 计算机中是以补码形式运算的

作者

ฅ´ω`ฅ

发布于

2021-06-10

更新于

2021-06-10

许可协议


评论