• 基础才是重中之重~位的运算


    回到目录

    位运算无论在C#,VB还是在T-SQL里都有对它支持,位运算即对数值类型的每位进行计算,对于程序里,你可以使用十进制,十六进制,二进制对它进行位运算,事实上无论你使用哪种进制,对于计算机来说最后都为把它转换成二进制(0,1)的形式,因为二进制为简单,呵呵。

    下面是关于位运算的表格

    运算符号
    位运算操作符
    运算对象类型
    运算结果类型
    对象操作数
    实例
    ~
    运算
    整型
    整型
    1个
    ~x
    &
    运算
    2个
    x & y
    |
    运算
    2个
    x | y
    ^
    异或运算
    2个
    x ^ y
    << 
    左移运算
    2个
    x << 2
    >> 
    右移运算
    2个
    x >> 2

    一般地,这种位运算中,我们的操作数多用于2的N次方的结果,如0,2,4,8,16,32,64,128...,为什么呢,因为这些数字在转换成二进制后都很

    特别,看一下代码,呵呵

    1   1
    2     10
    4       100
    8     1000
    16     10000
    32     100000
    64     1000000
    128   10000000

    看到时了它,它们只是在最高位是为1,而其它位上都是0,这样对于这些数字在进行位运算时,会有一些性质,我来总结一下:

    对于满足2的N次方的十进制数字有以下运算特性:

    1 与运算可以用来判断某个数是位在另外一个数中存在:

    10 & 2 //结果为2,大于0表示操作数2在操作数1中存在 10=8+2

    2 或运算可以用来将两个数相加在一起

    82 //结果为10,10 | 2 结果还是10,你可以把它转换为二进制看一下,(1000 | 10 为1010,而1010 | 10 结果还是1010 ))呵呵,而10|4结果为14

    3 非运算和与运算在一起使用,可以将一个元素从一个集合里去除

    4 & (~2) //结果为4,4里不包含2,所以直接返回原值4
    3 & (~2) //结果为1,3由1和2组成,所以去掉2后原值变为1

    4 左移运算,每移1位相当于乘2

    4 << 2 //结果为16

    5 右移去处,每移1位相当于除2

    4 >> 2 //结果为1

    总结:

    有时候,我们在书本上看到的及网络上看到的东西,不一定是正确的,有时,要求我们自己打开电脑去验证一下,呵呵!

    有时候,编程的东西,很多时候当你把十进制变成二进制后会,就海阔天空了,呵呵!

    感谢您的阅读!

    回到目录

  • 相关阅读:
    HDU4777 Rabbit Kingdom
    HDU6200 mustedge mustedge mustedge
    HDU6187 Destroy Walls
    最长公共上升子序列的学习
    关于约瑟夫问题的学习
    洛谷1602 Sramoc问题
    HDU2089 不要62
    poj3532 Round Numbers
    洛谷1014 Cantor表
    花盆Flowerpot[USACO12MAR]
  • 原文地址:https://www.cnblogs.com/lori/p/2879613.html
Copyright © 2020-2023  润新知