(十二)golang--进制和位运算
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--进制和位运算的更多相关文章
- 【JavaScript】进制转换&位运算,了解一下?
前言 在一般的代码中很少会接触到进制和位运算,但这不代表我们可以不去学习它.作为一位编程人员,这些都是基础知识.如果你没有学过这方面的知识,也不要慌,接下来的知识并不会很难.本文你将会学习到: 进制转 ...
- Python笔记_第一篇_面向过程_第一部分_3.进制、位运算、编码
通过对内存这一个部分的讲解,对编程会有一个相对深入的认识.数据结构是整个内存的一个重要内容,那么关于数据结构这方面的问题还需要对进制.位运算.编码这三个方面再进行阐述一下.前面说将的数据结构是从逻辑上 ...
- C#的格式化(进制转换|位运算)
1.首先做一下知识的普及C或c Currency 货币格式D或d Decimal 十进制格式E或e Exponent 指数格式F或f Fixed point (float)固定精度格式G或g Gene ...
- javascript中的类型转换(进制转换|位运算)
1:parseInt(string) : 这个函数的功能是从string的开头开始解析,返回一个整数 parseInt("123hua"); //输出 123 parseInt(& ...
- 4.Python 进制和位运算
.button, #logout { color: #333; background-color: #fff; border-color: #ccc; } span#login_widget > ...
- 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 ...
- ACM 16进制的简单运算
16进制的简单运算 时间限制:1000 ms | 内存限制:65535 KB 难度:1 描述 现在给你一个16进制的加减法的表达式,要求用8进制输出表达式的结果. 输入 第一行输入一个正整 ...
- NYOJ--244--16进制的简单运算(C++控制输入输出)
16进制的简单运算 时间限制:1000 ms | 内存限制:65535 KB 难度:1 描述 现在给你一个16进制的加减法的表达式,要求用8进制输出表达式的结果. 输入 第一行输入一个正整 ...
- nyoj 244-16进制的简单运算 (scanf("%x%c%x", &a, &b, &c); printf("%o", a ± b))
244-16进制的简单运算 内存限制:64MB 时间限制:1000ms 特判: No 通过数:12 提交数:13 难度:1 题目描述: 现在给你一个16进制的加减法的表达式,要求用8进制输出表达式的结 ...
随机推荐
- CRS-2674: Start of 'ora.cssd' on 'rac2' failed 引发的rac集群服务起不来问题
问题背景:客户反馈Oracle rac集群节点宕机 1.首先查看宕机原因,归档日志满导致服务重启,查看归档日志路径是USE_DB_RECOVERY_FILE_DEST (默认路径), 安装的时候没有做 ...
- CocosCreator 快速开发推箱子游戏,附代码
游戏总共分为4个功能模块: - 开始游戏(menuLayer) - 关卡选择(levelLayer) - 游戏(gameLayer) - 游戏结算(gameOverLayer) Creator内组件效 ...
- A-02 梯度下降法
目录 梯度下降法 一.梯度下降法详解 1.1 梯度 1.2 梯度下降法和梯度上升法 1.3 梯度下降 1.4 相关概念 1.4.1 步长 1.4.2 假设函数 1.4.3 目标函数 二.梯度下降法流程 ...
- B-概率论-条件概率
目录 条件概率 一.条件概率简介 二.条件概率推广 更新.更全的<机器学习>的更新网站,更有python.go.数据结构与算法.爬虫.人工智能教学等着你:https://www.cnblo ...
- Hive 官方手册翻译 -- Hive DML(数据操纵语言)
由 Confluence Administrator创建, 最终由 Lars Francke修改于 八月 15, 2018 原文链接 https://cwiki.apache.org/confluen ...
- 安装高可用Hadoop生态 (四) 安装Spark
4. 安装Spark 4.1. 准备目录 -bin-without-hadoop.tgz -C /opt/cloud/packages/ -bin-without-hadoop /opt/clo ...
- VMware ESXI6.0服务器安装系列:RAID设置
本文转载至http://www.scriptjc.com/article/847 1.连接显示器 2.插上键盘.U盘.显示器 3.看显示屏上的提示,按F12关机 4.关机前输入密码,然后按回车键 更换 ...
- Vue-CLI项目-vue-cookie与vue-cookies处理cookie
08.31自我总结 Vue-CLI项目-vue-cookie与vue-cookies处理cookie vue-cookie 一.模块的安装 npm install vue-cookie --save ...
- 权限维持-wmi事件
0x01 前言 WMIC扩展WMI(Windows Management Instrumentation,Windows管理工具),提供了从命令行接口和批命令脚本执行系统管理的支持. 在2015年的b ...
- [NOIp2017] luogu P3952 时间复杂度
跪着看评测很优秀. 题目描述 给你若干个程序,这些程序只有 For 循环,求这些程序的时间复杂度. Solution 大模拟.讲下细节. flag[i]flag[i]flag[i] 表示第 iii 位 ...