zoukankan      html  css  js  c++  java
  • 【C#】关于左移/右移运算符的使用

    吐槽先~为什么我的老师大学时候没教过我这东西  - -、

    继续送栗子:

    比如 “(1+2)<<3”

    你们猜等于几~

            Debug.Log((1+2)<<3)之后输出的是“24”。

    为什么呢~

    因为呀因为呀  “

      “左移/右移” 是指对应的二进制向左右移位,执行1+2=3,就变成了3<<3。即:把3对应的二进制向左移3位。

      3对应的二进制:11   向左移3位变成 11000

      二进制11000不就是十进制的24嘛~~~”

    继续拓展一下思维

         3>>1<<1 =?  一般人会想呀先向右移又向左移回来,结果肯定是3不会变呀~~~真·图样图森破!

            自己算一下就会发现:

            一个数向右移动一位后,所对应的二进制最后一位无论是1还是0,都已经没意义了,因为它消失了呀。然后,再向左移动一位,神奇的又增加的那一位又用0补上了。

            所以,3变成2进制的“11”向右移动一位变成“1”,再向左移动一位变成了“10”,也就是2。

            呵呵鉴于此刻无意间发现的这个惊天大秘密,以后再求小于等于某个数的偶数,就可以这样写嘛~

            当然大家也可以继续开脑洞拓展一下,直到玩坏它。

  • 相关阅读:
    什么是评审
    缺陷识别与缺陷跟踪
    白盒测试用例设计
    黑盒测试用例设计(二)
    黑盒测试用例设计技术
    Mysql基础
    JS函数
    SpringBoot整合JPA
    Python中的保留字
    操作系统的发展史
  • 原文地址:https://www.cnblogs.com/Feiyuzhu/p/4647825.html
Copyright © 2011-2022 走看看