23-二进制,位运算





案例1:

求~2=?

解决方法:

1.先求~2的反码:

    原码为:00000000 00000000 00000000 00000010

    因为正数的原码=反码=补码

   所以,~2的补码=00000000 00000000 00000000 00000010


    然后求反得:

   11111111 111111111 11111111 11111101


  由结果可以指到这是一个负数,

  因为负数的补码=反码+1;所以, 

 负数的反码=负数的补码-1;

  11111111 111111111 11111111 11111100

因为负数的反码等于负数的原码符号位不变,其他位取反。

 所以负数的原码等于 负数的反码符号位不变,其他位取反。

 1000000 000000000 00000000  00000011

  所以结果为  -3



案例2:

求~-5=?

   求补码:

     原码=100000000 00000000 00000000 00000101

      反码=111111111 1111111 11111111 111111010

    补码= 111111111 11111111   1111111  111111011



取反得:

        000000000 00000000 000000000 00000000100

因为由符号位可得这是一个正数。

所以他的补码对应的原码是一样的。

      所以结果为4.

   




计算总结:

原码的求法:

1、将数值部分转为二进制; 

2、用”0”代替符号”+”;用”1”代替符号”-”,并且将符号位放在最高位; 

3、假如符号位和二进制数组成达不到8位,我们将在中间加0,补足八位

举例:[+35]原码=00100011 


反码的求法:

(1)正数的时候;   反码=原码; (2)负数的时候; 反码由原码转变而来,符号位不变,其余各位取反(即0、1互换) 
举例: 
[+35]反码=[+35]原码=00100011;

 [-35]反码=11011100; 


补码的求法:

情况一:正数 
补码=反码=原码;    

情况二:负数      补码=反码+1;

举例:

[+35]补码=[+35]反码=[+35]原码=00100011;

[-35]补码=[-35]反码+1=11011100+1=11011101

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Muxiyale

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

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

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

打赏作者

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

抵扣说明:

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

余额充值