go语言-二进制与位运算
一、进制介绍
1、二进制:0,1 -->不能直接用二进制来表示一个整数,用%b输出二进制
package main
import "fmt"
func main() {
var i int =5
fmt.Printf("%b",i) //--->>显示5的二进制数
2、十进制:0-9 3、八进制:0-7 -->>以数字0开头表示
package main
import "fmt"
func main() {
var a int = 011
fmt.Println("a=",a)
4、十六进制:0-9 A-F(字母不区分大小写),以0x开头表示,字母不区分大小写
package main
import "fmt"
func main() {
var j =0x11
fmt.Println("j=",j)
二、进制转换-其他进制转十进制(初始进制数*初始进制数的次方)
1、二进制转十进制:1011=11,1*2的3次方+0*2的2次方+1*2的1+1*2的0次方
2、八进制转十进制:0123=83,1*8的2次方+2*8的1次方+3*8的0次方
3、十六进制转十进制:0x34A=842,3*16的2次方+4*16的1次方+10(A)*16的0次方 三、进制转换-十进制转其他进制--->>>都是除以要转的进制数,取余数
1、十进制转二进制转,该数除以2,将余数倒过来,就是二进制 10=1010
2、十进制转八进制,该数除以8,将余数倒过来,就是八进制 156=0234
3、十进制转十六进制,该数除以16,将余数倒过来,就是十六进制 356=0X164 四、进制转换-二进制转其他进制(八进制时三位为一组,十六进制时四位为一组)
1、二进制转八进制:将二进制分三位为一组,再将每个数*2的次方,1101011=0325
2、二进制转十六进制:将二进制分四位为一组,再将每个数*2的次方,11010101=0xD5 五、进制转换-其他进制转二进制--->>>都是除以要转的进制数,取余数
1、八进制转二进制:将每一位八进制数转成三位的二进制,0237=10011111
2、十六进制转二进制:将每一位十六进制数转成四位的二进制,0x237=1000110111 六、位运算:&、|、^、<<、>>,运算需将转成补码运算,若是负数,需将结果从补码转成反码,再转成源码
1、原码、反码、补码介绍
2、二进制最高位是符号位,0表示正数,1表示负数 --->>1=0000 00001 -1=1000 0001
3、正数的原码,反码,补码都是一样
4、负数的反码=原码符号位数不变,其它取反,补码=反码+1
1-->>原码:0000 0001-->反码:0000 0001-->补码:0000 0001
-1-->>原码:1000 0001-->反码:1111 1110-->补码:1111 1111
5、0的反码,补码都是0
6、在计算机运算的时候都是采用补码的方式运算
7、负数:补码转反码是-1,反码转源码是取反 8、& 按位与:全1为1,否则为0
-->>2&3=2 2=0000 0010 3=0000 0011,将2和3的二进制补码进行&运算
9、| 按位或:有1出1,否则为0 -->>2|3=3 2=0000 0010 3=0000 0011,将2和3的二进制补码进行|运算
10、^ 按位异或:一个为1,一个为0,结果为1,否则为0
-->>2^3=1 2=0000 0010 3=0000 0011,将2和3的二进制补码进行^运算
-->>-2^2=-4 2=(原码:1000 0010-->>反码:1111 1101-->>补码:1111 1110 2=0000 0011,将-2和2的二进制补码进行^运算
-->>运算结果是补码:1111 1100-->>转反码:1111 1011-->>转源码:1000 0100=-4 11、右位移运算:低位溢出,符号位不变,并用符号位补溢出的高位
12、左位移运算:符号位数不变,低位补0
go语言-二进制与位运算的更多相关文章
- 深入理解计算机系统(2.2)---布尔代数以及C语言上的位运算
布尔代数上的位运算 布尔代数是一个数学知识体系,它在0和1的二进制值上演化而来的. 我们不需要去彻底的了解这个知识体系,但是里面定义了几种二进制的运算,却是我们在平时的编程过程当中也会遇到的.这四种运 ...
- C/C++语言中的位运算
在计算机程序中,数据的位是可以操作的最小数据单位,理论上可以用“位运算”来完成所有的运算和操作. 一般的位操作是用来控制硬件的,或者做数据变换使用,但是,灵活的位操作可以有效地提高程序运行的效率.C语 ...
- C语言中的位运算和逻辑运算
这篇文章来自:http://blog.csdn.net/qp120291570/article/details/8708286 位运算 C语言中的位运算包括与(&),或(|),亦或(^),非( ...
- C语言中的位运算的技巧
一.位运算实例 1.用一个表达式,判断一个数X是否是2的N次方(2,4,8,16.....),不可用循环语句. X:2,4,8,16转化成二进制是10,100,1000,10000.如果减1则变成01 ...
- Java二进制和位运算,这一万字准能喂饱你
基础不牢,地动山摇.本文已被 https://www.yourbatman.cn 收录,里面一并有Spring技术栈.MyBatis.JVM.中间件等小而美的专栏供以免费学习.关注公众号[BAT的乌托 ...
- POJ 2436 二进制枚举+位运算
题意:给出n头牛的得病的种类情况,一共有m种病,要求找出最多有K种病的牛的数目: 思路:二进制枚举(得病处为1,否则为0,比如得了2 1两种病,代号就是011(十进制就是3)),首先枚举出1的个数等于 ...
- #C语言初学记录(位运算)
位运算 Problem Description7-1 数组元素循环右移问题 一个数组A中存有N(>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向右移M(≥0)个位置,即将A中的数据由 ...
- C语言基础知识--位运算
1.原码,反码,补码: (1)在n位的机器数中,最高位为符号位,该位为零表示为正,为一表示为负:其余n-1位为数值位,各位的值可为零或一.当真值为正时,原码.反码.补码数值位 完全相同:当真值为负时, ...
- POJ2570 二进制,位运算,Floyd
题意: 给你一个有向图,两点之间有多种连接方式,然后每次询问都问你点A,B之间有哪些方式可以到达,每个小字母是一个方式. 思路: 很巧妙的位运算和Floyd应用,借助Floyd ...
随机推荐
- mysql在windows下的服务安装
前提必须用管理员身份运行 1.删除Mysql服务,打开命令行,输入下面的指令 sc delete MySql 2.初始化一下数据,比如配置文件中设置了数据的存储路径,日志位置等:该命令必须用管理员身份 ...
- 使用TCP的协议有哪些?使用UDP的协议有哪些?
运行于TCP协议之上的协议: HTTP协议:超文本传输协议,用于普通浏览 HTTPS协议:安全超文本传输协议,身披SSL外衣的HTTP协议 FTP协议:文件传输协议,用于文件传输 POP3协议:邮局协 ...
- [转帖]Xshell改字体,改大小,改快捷键方法
Xshell改字体,改大小,改快捷键方法 -- :: Jason Ho 阅读数 62更多 分类专栏: Software 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附 ...
- 【转帖】处理器的三国时代:DR公司盛气凌人,IBM转身成就微软
处理器的三国时代:DR公司盛气凌人,IBM转身成就微软 https://www.eefocus.com/mcu-dsp/360555 <处理器史话>之五 2016-04-06 15:24 ...
- GCC 基础知识
目录 GCC 基础知识 一.GCC编译选项解析 二.多模块.多个文件一起编译 三.静态库与动态库 四.查看帮助文档 GCC 基础知识 一.GCC编译选项解析 1. 常用编译选项 命令格式:gcc [选 ...
- Detecting GAN-generated Imagery using Color Cues
Abstract 论文创新点:分析流行GAN网络结构得知,GAN网络生成得图片在颜色处理与真实摄像机拍摄的照片存在不同,主要表现在两方面. 实验结果:证明了两种线索能够有效区分GAN生 ...
- OSGI.NET插件方式开发你的应用
之前一直从事C# WEB开发.基本都是业务开发,性能优化. 体力活占比90%吧.模块真的很多很多,每次部署经常出先各种问题.发布经常加班. 今年开始接触winform 开发.发现C# 的事件 委托 ...
- Spring Cloud Alibaba学习笔记(16) - Spring Cloud Gateway 内置的路由谓词工厂
Spring Cloud Gateway路由配置的两种形式 Spring Cloud Gateway的路由配置有两种形式,分别是路由到指定的URL以及路由到指定的微服务,在上文博客的示例中我们就已经使 ...
- 如何把前端用ajax发过来的图片传到node上,并且用node保存在oss图片服务器上?
一:只上传一张图片 1.1:node需要安装的插件,先安好 npm install ali-oss uuid co --save A.ali-oss 用途:aliyun OSS(Object Stor ...
- C# 后台获取GridView列表的值
int rowIndex = ((GridViewRow)((Button)sender).NamingContainer).RowIndex;//获取gridview中的行号 ...