原码、反码、补码

原码

原码就是符号位加上二进制格式的真值
下面用八位二进制表示:

1   ->  0000 0001
-1  ->  1000 0001

反码

正数的反码是其本身
负数的反码是符号位不变,其余按位取反

1   ->  0000 0001
-1  ->  1111 1110

补码

正数补码是其本身
负数补码将反码+1

1   ->  0000 0001
-1  ->  1111 1101

go按位取反

package main

import "fmt"

func main() {
    a := 1
    fmt.Printf("%d\n",^a)
}

输出结果是-2
根据计算机的原反补的规则,
1的二进制补码是0000 0001
按位取反后得到1111 1110,这个结果是补码,必须求出其原码我们才能知道这是哪个数字,
1得到反码1111 1101, 取反得到原码1000 0010,即-2

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值