(十二)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进制输出表达式的结 ...
随机推荐
- 阿里云DLA工具 查询tablestore数据
OTS和DLA元信息映射逻辑 字段的映射关系 OTS DLA INTEGER(8bytes) bigint(8bytes) STRING varchar BINARY varbinary DOUBLE ...
- mac系统Intellij Idea的java环境配置:JDK + Tomcat + Maven
一.JAVA JDK查看与配置 1.查看java路径详细信息: /usr/libexec/java_home -V 2.java默认路径 jdk1.6: /System/Library/Java/Ja ...
- Git学习记录-基本命令篇
目录 网页在线练习地址 https://learngitbranching.js.org/ 1.git commit Git 仓库中的提交记录保存的是你的目录下所有文件的快照,就像是把整个目录复制,然 ...
- ReentrantLock源码学习总结 (一)
[^ ]: 以下源码分析基于JDK1.8 ReentrantLock 示例 private ReentrantLock lock = new ReentrantLock(true); public v ...
- deferred对象和promise对象(二)---deferred对象
早上醒来,继续讨论deferred对象和primise对象. deferred对象的的方法: 1.$.Deferred()-----生成一个deferred对象 2.deferred.done()-- ...
- go 学习笔记之解读什么是defer延迟函数
Go 语言中有个 defer 关键字,常用于实现延迟函数来保证关键代码的最终执行,常言道: "未雨绸缪方可有备无患". 延迟函数就是这么一种机制,无论程序是正常返回还是异常报错,只 ...
- Spring源码分析之IOC的三种常见用法及源码实现(二)
Spring源码分析之IOC的三种常见用法及源码实现(二) 回顾上文 我们研究的是 AnnotationConfigApplicationContext annotationConfigApplica ...
- java高并发_博客-网址-资料 推荐
大概说一下自己作为入门学习java高并发的博客地址,很不错在自己的博客里记录一下:如果能有刷到我的博客的骚年,又刚好想了解java高并发,强烈推荐看看 地址:http://www.itsoku.com ...
- wwindows权限认识(用户及用户组)
windows权限认识(用户及用户组) Windows系统内置了许多本地用户组,这些用户组本身都已经被赋予一些权限(permissions),它们具有管理本地计算机或访问本地资源的权限.只要用户账户加 ...
- [JZOJ5817] 【NOIP提高A组模拟2018.8.15】 抄代码
Description J 君是机房的红太阳,每次模拟她总是 AK 虐场.然而在 NOIP2117 中,居然出现了另一位 AK 的选手 C 君! 这引起了组委会的怀疑,组委会认为 C 君有抄袭 J 君 ...