世界上并没有完美的程序,但我们并不因此而沮丧,因为写程序本来就是一个不断追求完美的过程。 ——摘自周志明

位运算,效率高

1、先理解原码、反码、补码

  正数的原码、反码、补码都一样。

    举例  10为例。

 

  关键是负数。

      原码:

      反码:最高位不变,其余的取反得到:1111  1111  1111  1111  1111  1111  1111  0101

      补码:等于反码加1。         1111  1111  1111  1111  1111  1111  1111  0110

2、位运算

  位运算符:操作数是整数,但是操作负整数时,用的是补码!!!!!

  左移   << :  右边补0

  右移   >>:   左边补0或1,如果原数最高位是1就补1,是0就补0.

  无符号右移   >>> :  左边补0

  按位与  & :二进制对应位置取与  ,同时为1才为1,否则为0

  按位或  | :二进制对应位置取或  ,有一个为1就为1

  按位异或运算 ^ :二进制对应位置取异或  ,两者不同才为1

  按位取反  ~ :二进制对应位置取反  ,原来是1,变为0,原来是0变为1

  说明:位运算符都是机器数直接运算的

 

    

posted @   白杯与咖啡  阅读(1590)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core GC计划阶段(plan_phase)底层原理浅谈
· .NET开发智能桌面机器人:用.NET IoT库编写驱动控制两个屏幕
· 用纯.NET开发并制作一个智能桌面机器人:从.NET IoT入门开始
· 一个超经典 WinForm,WPF 卡死问题的终极反思
· ASP.NET Core - 日志记录系统(二)
阅读排行:
· 在外漂泊的这几年总结和感悟,展望未来
· 博客园 & 1Panel 联合终身会员上线
· 支付宝事故这事儿,凭什么又是程序员背锅?有没有可能是这样的...
· https证书一键自动续期,帮你解放90天限制
· 在 ASP.NET Core WebAPI如何实现版本控制?
点击右上角即可分享
微信分享提示