原码反码补码,位运算

原码反码补码

基本介绍

对于有符号的而言:

  1. 二进制的最高位是符号位:0表示整数,1表示负数
  2. 正数的原码反码补码是一样的
  3. 负数的反码=负数的原码,符号位不变,其余为取反(0->1,1->0)
  4. 负数的补码=负数的反码+1
  5. 0的反码补码都是0
  6. 在计算机运算时,都是在以补码的方式运算的

位运算

位运算的基本介绍

  1. &是按位与,两位都是1时,为1,否则为0
  2. |是按位或,两位都是0时,为0,否则为1
  3. ^是按位异或,两边相异为1,相同为0
    注意在计算机在运算时,都是使用相关数字的补码来进行运算的,在使用负数时,要重点关注
  4. ">>"右移符号
    对于有符号数,低位溢出,符号位不变,并用符号位来填补高位空缺,可以粗略理解为除以2的几次方,当然不存在小数一说(就是遇到小数,向下取整)
    对于无符号数,叫逻辑右移,高位补0,
  5. "<<"左移符号,符号位会改变,整体向左移动,低位补0

几个重点例子

  1. 2&4
    2 0000 0010
    4 0000 0100
    2&4 0000 0000 =0
  2. 2|4
    2 0000 0010
    4 0000 0100
    2|4 0000 0110 =6
    3.-2^4
    -2的原码 1000 0010
    -2的反码 1111 1101
    -2的补码 1111 1110
    4的补码 0000 0100
    -2^4的补码 1111 1010
    -2^4的反码 1111 1001
    -2^4的原码 1000 0110 =-6

代码用例

func main() {
var a int8 = -3
fmt.Println(a << 6)
fmt.Println(1 >> 1)
}
输出结果为:
64
0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值