1.基本进制

(1)二进制:0,1,满2进1

  • 在golang中,不能直接使用一个二进制表示一个整数,可以用八进制、十进制和十六进制表示

(2)十进制:0-9,满10进1

(3)八进制:0-7,满8进1,以数字开头

(4)十六进制:0-9及A-F,满16进1,以0x或0X开头,此处A-F不区分大小写,例如0x21AF+1=0x21B0

package main

import "fmt"

func main() {
var i int = 5
fmt.Printf("%b \n", i) //这里^表示几次方
//转成十进制为:8^1+8^0=9
var j int = 011
fmt.Println("j=", j) //转成十进制:16^1+16^0=17
var k int = 0x11
fmt.Println("k=", k) }

2.进制之间的转换

(1)其它进制转十进制

  次方相加

  比如:二进制1011转为十进制:2^3+2^1+2^0=11

     八进制23转为十进制:2*(8^1)+3*(8^0)=16+3=19

(2)十进制转其他进制

  除法取余

  11转二进制:11除以2,商为5,余数为1;5除以2,商为2,余数为1;2除以2,商为1,余数为0;1除以2,商为0,余数为1,;当商为零时,余数从后往前排列:1011

(3)二进制转八进制、十六进制

  二进制-->八进制:从右往左,每三位转成八进制;111101的八进制就是75:7=1*2^2+1*2^1+1*2^0,5=1*2^2+1*2^0

  二进制-->十八进制:从右往左,每四位转成十六进制;11111011的十六进制就是FB

(4)八进制、十六进制转二进制

  八进制-->二进制:依次将每一位转为3位的二进制

  十六进制-->二进制:依次将每一位转成4位的二进制

3.位运算

(1)原码、反码、补码

  1)对于有符号而言:

  • 二进制的最高位是符号位:0表示正数,1表示负数
  • 正数的原码、反码、补码都一样
  • 负数的反码=除符号位以外的取反
  • 负数的补码=反码+1
  • 0的反码、补码都是0
  • 在计算机运算的时候,都是以补码的方式进行运算的

按位&:两位全为1,则为1,否则为0

按位|:两位中有一个为1,则为1,否则为0

按位^:两位一个为1,一个为0,结果为1,否则为0

例如:2的原码、反码和补码都是:0000 0010

     3的原码、反码和补码都是:0000 0011

则有 2 & 3 = 0000 0010 = 2

   2 |  3 = 0000 0011 = 3

   2 ^ 3 = 0000 0001 = 1

再看-2的原码:1 000 0010,其反码为1 111 1101,补码为1 111 1110

则有-2^2 =1 111 1110 ^ 0 000 0010 = 1 111 1100,我们必须转换成原码才能知道它的值,则有:结果-1再取反

1 111 1100 - 1 = 1 111 1011 符号位不变再取反 1 000 0100,则-2^2的值是:-4

1 111 1100 - 1 = 1 111 1011 再取法

(2)>>和<<

>>:符号位不变,低位溢出,高位补0,例如补码1100 0011 变成 1010 0001;对于正数而言,相当于值除以2,负数没实际意义;

<<:符号位不变,低位补0,例如补码1100 0011 变成 100 00110;对于正数而言,相当于值乘以2,负数没实际意义;

(十二)golang--进制和位运算的更多相关文章

  1. 【JavaScript】进制转换&位运算,了解一下?

    前言 在一般的代码中很少会接触到进制和位运算,但这不代表我们可以不去学习它.作为一位编程人员,这些都是基础知识.如果你没有学过这方面的知识,也不要慌,接下来的知识并不会很难.本文你将会学习到: 进制转 ...

  2. Python笔记_第一篇_面向过程_第一部分_3.进制、位运算、编码

    通过对内存这一个部分的讲解,对编程会有一个相对深入的认识.数据结构是整个内存的一个重要内容,那么关于数据结构这方面的问题还需要对进制.位运算.编码这三个方面再进行阐述一下.前面说将的数据结构是从逻辑上 ...

  3. C#的格式化(进制转换|位运算)

    1.首先做一下知识的普及C或c Currency 货币格式D或d Decimal 十进制格式E或e Exponent 指数格式F或f Fixed point (float)固定精度格式G或g Gene ...

  4. javascript中的类型转换(进制转换|位运算)

    1:parseInt(string) : 这个函数的功能是从string的开头开始解析,返回一个整数 parseInt("123hua"); //输出 123 parseInt(& ...

  5. 4.Python 进制和位运算

    .button, #logout { color: #333; background-color: #fff; border-color: #ccc; } span#login_widget > ...

  6. Codeforces Round #299 (Div. 2) B. Tavas and SaDDas【DFS/*进制思维/位运算/一个数为幸运数,当且仅当它的每一位要么是4,要么是7 ,求小于等于n的幸运数个数】

    B. Tavas and SaDDas time limit per test 1 second memory limit per test 256 megabytes input standard ...

  7. ACM 16进制的简单运算

    16进制的简单运算 时间限制:1000 ms  |  内存限制:65535 KB 难度:1   描述 现在给你一个16进制的加减法的表达式,要求用8进制输出表达式的结果.   输入 第一行输入一个正整 ...

  8. NYOJ--244--16进制的简单运算(C++控制输入输出)

    16进制的简单运算 时间限制:1000 ms  |  内存限制:65535 KB 难度:1   描述 现在给你一个16进制的加减法的表达式,要求用8进制输出表达式的结果.   输入 第一行输入一个正整 ...

  9. nyoj 244-16进制的简单运算 (scanf("%x%c%x", &a, &b, &c); printf("%o", a ± b))

    244-16进制的简单运算 内存限制:64MB 时间限制:1000ms 特判: No 通过数:12 提交数:13 难度:1 题目描述: 现在给你一个16进制的加减法的表达式,要求用8进制输出表达式的结 ...

随机推荐

  1. zend studio 13.6 导入项目及其他设置

    1. 先创建一个新的项目:file -> new -> project 2. 创建新项目之后,在左侧的项目目录上右键 -> import 到此导入项目, 完成! 设置编码utf-8 ...

  2. js模拟下拉菜单-键盘、鼠标(代码详解)

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  3. ES6 —— entries(),keys()和values()

    ES6 提供三个新的方法 —— entries(),keys()和values() —— 用于遍历数组.它们都返回一个遍历器对象,可以用for...of循环进行遍历,唯一的区别是keys()是对键名的 ...

  4. 安装高可用Hadoop生态 (一 ) 准备环境

    为了学习Hadoop生态的部署和调优技术,在笔记本上的3台虚拟机部署Hadoop集群环境,要求保证HA,即主要服务没有单点故障,能够执行最基本功能,完成小内存模式的参数调整. 1.    准备环境 1 ...

  5. django-orm框架表单的增删改查

    08.14自我总结 django-orm框架 一.orm基本配置 1.创建django项目 命令行:cmd先去到django创建目录,然后输入django-admin startproject dja ...

  6. Java编程思想——第17章 容器深入研究 读书笔记(三)

    七.队列 排队,先进先出. 除并发应用外Queue只有两个实现:LinkedList,PriorityQueue.他们的差异在于排序而非性能. 一些常用方法: 继承自Collection的方法: ad ...

  7. 攻防世界(XCTF)WEB(进阶区)write up(三)

    挑着做一些好玩的ctf题 FlatScience web2 unserialize3upload1wtf.sh-150ics-04web i-got-id-200 FlatScience 扫出来的lo ...

  8. Python开发【第四篇】语句与函数

    语句 statement 语句是由一些表达式组成,通常一条语句可以独立的执行来完成一部分事情,并且形成结果. 多条语句写在一行内要用分号分开 例子: print('hello world') #这是一 ...

  9. java与java web数组括号的不同

    由于之前学JAVA SE数组时习惯了数组括号的写法,到了Web这里写了有点不太习惯了,赶快写篇博客加深一下印象哈 一. java和java web中的数组的不同 java: int[] arr = n ...

  10. opencv::积分图计算

    利用积分图像,可以计算在某象素的上-右方的或者旋转的矩形区域中进行求和.求均值以及标准方差的计算,并且保证运算的复杂度为O(). #include <opencv2/opencv.hpp> ...