go 数的进制与位运算

二进制

0,1
满2进1
在golang中, 不能直接使用二进制来表示一个整数, 它沿用了c的特点

十进制

0-9
满10进1

八进制

0-7
满8进1
以数字0开头表示

十六进制

0-9 A-F(A-F不区分大小写)
满16进1
以0x或0X开头表示

func main()  {
	var i int = 5
	//二进制输出
	fmt.Printf("%b \n", i)

	var j int = 011
	//八进制
	fmt.Println("j=", j)

	var k int = 0x11
	fmt.Println("k=", k)
}

运行结果

101 
j= 9
k= 17

位运算

func main()  {
	var a int = 1 >> 2
	var b int = -1 >> 2
	var c int = 1 << 2
	var d int = -1 << 2
	fmt.Println("a=", a)
	fmt.Println("b=", b)
	fmt.Println("c=", c)
	fmt.Println("d=", d)
}

运行结果

a= 0
b= -1
c= 4
d= -4
	fmt.Println(2&3)
	fmt.Println(2|3)
	fmt.Println(13&7)
	fmt.Println(5|4)
	fmt.Println(-3^3)

运行结果

2
3
5
5
-2

原码,反码,补码

  • 二进制的最高位是符号位: 0表示正数, 1表示负数
  • 正数的原码,反码,补码都一样
  • 负数的反码=它的原码符号位不变,其它位取反
数字 原码 反码 补码
1 0000 0001 0000 0001 0000 0001
-1 1000 0001 1111 1110 1111 1111
  • 负数的补码=它的反码+1
  • 0的反码,补码都是0
  • 在计算机运算的时候,都是以补码的方式来运算的

位运算符和移位运算符

位运算符

运算符 运算规则
按位与 & 有0得0, 全1得1
按位或 | 有1得1, 全0得0
按位异或 ^ 相同得0, 不同得1
	fmt.Println(2&3)
	fmt.Println(2|3)
	fmt.Println(2^3)
	fmt.Println(-2^2)

移位运算符

运算符 运算规则
右移运算符 >> 低位溢出,符号位不变,并用符号位补溢出得高位
左移运算符 << 符号位不变, 低位补0
发布了97 篇原创文章 · 获赞 25 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/wuxingge/article/details/104015320