(十二)golang--进制和位运算
1.基本进制
(1)二进制:0,1,满2进1
- 在golang中,不能直接使用一个二进制表示一个整数,可以用八进制、十进制和十六进制表示
(2)十进制:0-9,满10进1
(3)八进制:0-7,满8进1,以数字0开头
(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,负数没实际意义;
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- jQuery 效果
- jQuery 样式操作
- Nginx 限制资源的访问
- 如何设计一个秒杀系统
- Linux下登录凭证窃取技巧
- kali修改root密码
- PPT画成这样,述职答辩还能过吗?
- 详解 Cookie,Session,Token
- SSM 单体框架 - 前端开发:课程和广告模块
- 80 行 Python 代码写个图形计算器
- 近期对libatapp的一些优化调整(增加服务发现和连接管理,支持yaml等)
- SSM 单体框架 - 前端开发:用户和权限模块
- Cnitch:一款Docker引擎运行进程权限检测工具
- SAP Spartacus BrowserPlatformLocation的初始化逻辑
- 重启 CentOS 7 系统后的 IP 地址问题