可谓最详细的 原码、反码、补码和位非~ 算法

基础背景

首先我们需要知道以下前提:
1. 原码:一个数字的二进制结果。

例如:
+10 : 0000   1010
-7  : 1000   0111

2. 原码、反码、补码
正数:原反补码全部一样。
负数
反码=原码符号位(最左边一位为符号位)不变,其他各位取反。
补码=反码+1,符合位不变。

例如:
	 +10(原码):  0000   1010
	 +10(反码):  0000   1010
	 +10(补码):  0000   1010
	 
	 -7(原码):   1000   0111
	 -7(反码):   1111   1000
	 -7(补码):   1111   1001

位非~ :对补码各位取反,包括符号位

遵循一个规则:
原码1—>反码1—>补码1—>补码2—>反码2—>原码2

(补码1–>补码2 的过程就是位非~,即各位取反,包括符号位)

例如:
	 +10(原码):      0000   1010
	 +10(反码):      0000   1010
	 +10(补码):      0000   1010
	 ~(+10)(补码):   1111   0101     (符号位为1,负数,采用负数的原反补规则)
	 ~(+10)(反码):   1111   0100       (反补+1,补反-1)
     ~(+10)(原码):   1000   1011       结果为:-11
	 
	 -7(原码):       1000   0111
	 -7(反码):       1111   1000
	 -7(补码):       1111   1001
	 ~(-7)(补码):    0000   0110     (符号位为0,正数,采用正数的原反补规则)
	 ~(-7)(反码):    0000   0110       
     ~(-7)(原码):    0000   0110       结果为:+6

注:仅供参考。全为个人理解,如有不足,欢迎指教。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

nacos_8848

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值