An introduction to bitwise operators

简介:
读了codeproject上的这篇《An introduction to bitwise operators》,前面两个运算符说得不错,但第三个异或运算符感觉不够准确,作者给出的示例不知道有什么用处,不就是把数做了两次异或又回来了么?
 
&运算符用来判定某些位是0还是1:
#include <iostream>
using namespace std;
int main(void)
{
    int num = 17;
    if(num&0x10)
    {
        cout<<"第四位是"<<endl;
    }
    else
    {
        cout<<"第四位是"<<endl;
    }
    return 0;
}
|运算符用来对某些位置1:
#include <iostream>
using namespace std;
int main(void)
{
    int num = 50;
    num = num|0x04;
    cout<<hex<<num<<endl;
    return 0;
}

异或运算符最常用的应该是用其实现两个数的交换:
#include <iostream>
using namespace std;
int main(void)
{
    int n1 = 17,n2 = 20;
    n1 = n1^n2;
    n2 = n2^n1;
    n1 = n1^n2;
    cout<<n1<<" "<<n2<<endl;
    return 0;
}

   
   将取反运算符和与运算符结合起来,可以对某些位置零:
#include <iostream>
using namespace std;
int main(void)
{
    int b = 50;
    cout << "b = " << b << endl;
    int c = b & ~0x10;
    cout <<hex<< "c = " << c << endl;
    return 0;
}

最后的位域有一个问题没搞懂:
#include <iostream>
using namespace std;

struct date_struct 
{
    int day:4,   // 1 to 31
    month : 4,   // 1 to 12
    year:12; 
};

int main(void)
{
    date_struct d1;
    d1.day = 8;
    d1.month = 8;
    d1.year = 1844;
    cout<<d1.year<<" "<<d1.month<<" "<<d1.day<<endl;
    return 0;
}

我已经设置day和month各自占据4位,应该是可以满足的,可结果却都是-8,why?


本文转自Phinecos(洞庭散人)博客园博客,原文链接:http://www.cnblogs.com/phinecos/archive/2007/12/15/996211.html,如需转载请自行联系原作者
目录
相关文章
UVa11296 - Counting Solutions to an Integral Equation(枚举技巧)
UVa11296 - Counting Solutions to an Integral Equation(枚举技巧)
49 0
|
机器学习/深度学习 自然语言处理 JavaScript
CasRel:A Novel Cascade Binary Tagging Framework for Relational Triple Extraction 论文解读
从非结构化文本中抽取关系三元组对于大规模知识图构建至关重要。然而,现有的工作很少能解决重叠三元组问题,即同一句子中的多个关系三元组共享相同的实体。
149 0
|
索引
LeetCode 413. Arithmetic Slices
如果一个数列至少有三个元素,并且任意两个相邻元素之差相同,则称该数列为等差数列。
100 0
LeetCode 413. Arithmetic Slices
|
Swift
Swift5.1—比较运算符(Comparison Operators)
Swift5.1—比较运算符(Comparison Operators)
85 0
1088. Rational Arithmetic (20)
For two rational numbers, your task is to implement the basic arithmetics, that is, to calculate their sum, difference, product and quotient.
794 0
零元学Expression Blend 4 - Chapter 32 简单轻松的学会如何使用Visual States(上)
原文:零元学Expression Blend 4 - Chapter 32 简单轻松的学会如何使用Visual States(上) Visual State Manager中文翻译为视觉状态管理器,这...
1295 0