按位非(~)就是操作数的负值-1举例2和-4

最近在学js,看到JavaScript高级程序设计里面有一句话:
按位非的本质就是操作数的负值-1,网上找了一下都是理论的,我谈一下我们理解,就在这里举一个2和-4的例子
首先,我们习惯的是原码,都是计算机里面是补码存取数据的,反码就是起了一个中间的作用。
其次,~就是所有位数全部取反,不要和求反码混淆了,包括符号位都是要取反的

假设以8位二进制存储
求~2
我们习惯的形式:
2的原码:00000010(第一个是符号位,0表示+,1表示-)

计算机里面存的2的样子:
2的补码:00000010(由于2是正数,正数的原码补码反码都是一样的)

则~2在计算机中的形式为:
~2的补码:11111101(就是把2的补码所有位数全部取反)
~2的反码:1000010(符号位为1,则求原码需要把补码->反码->原码)
~2的原码:1000011(也就是我们习惯的形式,由于符号位是1,即-3)

再来一个:
求~-4
我们习惯的形式:
-4的原码:10000100(第一个是符号位,0表示+,1表示-)

-4的反码:11111011(由于-5是负数,则求补码需要把原码->反码->补码)

计算机里面存的-5的样子:
-4的补码:11111100

则~-4在计算机中的形式为:
~-4的补码:00000011(就是把-4的补码所有位数全部取反)
~-4的原码:00000011(也就是我们习惯的形式,由于它的补码符号位为0,正数的原码=反码=补码,即5)
因此结论(按位非就是操作数的负值-1)得到验证
~2就是-3
~-4就是5

还没学计算机组成原理,可能理解有误差,欢迎指正

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值