开发者学堂课程【GO 语言核心编程-基础语法、数组、切片、Map:原码 反码 补码】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/625/detail/9557
原码 反码 补码
内容简介:
一、位运算的思考题
二、二进制在运算中的说明
三、原码、反码、补码
一、位运算的思考题
1)请看下面的代码段,回答a,b,c,d结果是多少?
func main()
}
var a int = 1 >> 2
var b int = -1 >> 2
var c int =1 << 2
var d int = -1 << 2
//a,b,c,d结果是多少 ?
fmt.Printin("a=" a)
fmt.Printin("b=”
b)
fmt.Printin("c=",c)
fmt.Printin("d=”,d)2)
}
2)请回答在 Golang 中,下面的表达式运算的结果是:
func main()
{
fmt.Printin(2&3)
fmt.Printin(2|3)
fmt.Printin(13&7)
fmt.Printin(5|4)
fmt.Printin(-3^3)
}
二、二进制在运算中的说明
二进制是逢2进位的进位制,0、1是基本算符。现代的电子计算机技术全部采用的是二进制,因为它只使用0、1两个数字符号,非常简单方便,易于用电子方式实现。
计算机内部处理的信息,都是采用二进制数来表示的。
二进制( Binary )数用0和1两个数字及其组合来表示任何数。进位规则是“逢2进1”,数字1在不同的位上代表不同的值,按从右至左的次序,这个值以二倍递增。在计算机的内部,运行各种运算时,都是以二进制的方式来运行。
三、原码、反码、补码
网上对原码反码补码的解释过于复杂,精简为6句话:
对于有符号的而言:
1) 二进制的最高位是符号位:0表示正数1表示负数
1---》[0000 0001] -1===>[1000 0001]
2) 正数的原码,反码,补码都一样
3)负数的反码=它的原码符号位不变,其它位取反(0->11->0)
1===>原码[00000001]反码[00000001]补码[00000001]
-1===>原码[10000001]反码[11111110]补码[11111111]
4) 负数的补码=它的反码+15)
5) 0的反码,补码都是0
6)在计算机运算的时候,都是以补码的方式来运算的
1+1 1-1=1+(-1)