zoukankan      html  css  js  c++  java
  • C 位操作

    C 位操作

    http://blog.csdn.net/lwbeyond/article/details/7407830

    一. 位运算符

    C提供了几种位操作符,如下表所示:

    运算符

    含义

    运算符

    含义

    &

    按位与

    ~

    取反

    |

    按位或

    <<

    左移

    ^

    按位异或

    >>

    右移

    二. 位运算操作

    1. "按位与" (&)

    原则是:全1为1,有0为0。

    2. “按位或” (|)

    原则是:有1为1,全0为0。即只要有一个为1,则结果为1。

    3. “异或” (^)

    原则是:相同为0,不同为1。即参与运算的两个位相同(‘1’与‘1’或‘0’与‘0’)时结果为‘0’,不同时为‘1’。

    4. “取反” (~)

    原则是:是 1 得 0,是 0 得 1。

    5. "左移"(<<)

    用来将一个数的各位全部向左移若干位。

    如:a = a<<2 表示将a的各位左移 2 位,右边补0。

    左移 N 位,就等于乘以了2N,但一结论只适用于左移时被溢出的高位中不包含‘1’的情况。

    6. "右移"(>>)

     

    右移与左移相类似,只是位移的方向不同。

    如:a = a>>1表示将a 的各位向右移动1位。

    右移N位,就相当于除以2N,但要注意符号位的问题。

    三. 应用

    1. & 的应用

    a. 特定位清零 (mask中特定位 置0,其它位为1,s = s & mask)

    b. 取某数中指定位 (mask中特定位 置1,其它位为0,s = s & mask)

    2. |的应用

    a. 常用来将源操作数某些位 置1,其它位不变。 (mask中特定位 置1,其它位为0,s = s | mask)

    3. ^ 的应用

    a. 使特定位的值取反 (mask中特定位 置1,其它位为0,s = s ^ mask)

    b. 不引入第三变量,交换两个变量的值 (a = a^b; b = a^b; a = a^b)

  • 相关阅读:
    位移算数符
    蓝桥杯 错误票据(第四届预赛第7题)
    hdu Train Problem I(栈的简单应用)
    ACM YTU 2018 母牛的故事
    ACM YTU 1012 u Calculate e
    C 语言 printf格式控制详解
    ACM YTU 十进制与八进制的转换 (栈和队列) STL栈调用
    ACM HDU 2044 一只小蜜蜂
    ACM YTU 挑战编程 字符串 Problem A: WERTYU
    ACM HDU 1021 Fibonacci Again
  • 原文地址:https://www.cnblogs.com/honeybusybee/p/5259189.html
Copyright © 2011-2022 走看看