位运算

原创 2013年12月03日 10:39:50

位运算概述:

有些位运算可以关作为闭位的手段,屏蔽掉某些位,如奇偶校验位。有些位运算相反,可以用来置位,直接对结果变量的每一位分别处理,移位运算可以对外部设备(如 D/A转换器)的输入和状态信息进行译码,移运算还可以用于整数的快速乘、除运算。

下表列出了位运算的运算符和其对应的功能,位运算的操作对象主要是 整形数据、字符型数据


下面就具体的针对这些运算符在实际中使用进行举例:

CRect rect;
	m_listCtrl.GetClientRect(&rect);
	//设置列表控件风格
	DWORD dwStyle;
	dwStyle=::GetWindowLong(m_hWnd,GWL_STYLE);
    dwStyle|=LVS_REPORT|LVS_SHOWSELALWAYS|LVS_EDITLABELS;	
	::SetWindowLong(m_hWnd,GWL_STYLE,dwStyle);
	dwStyle=m_listCtrl.GetExtendedStyle();
	dwStyle|=LVS_EX_FULLROWSELECT;//LVS_EX_GRIDLINES|
    //设置扩展风格
	m_listCtrl.SetExtendedStyle(dwStyle);	
	m_listCtrl.InsertColumn(0, "姓名", LVCFMT_LEFT, rect.Width());
	m_listCtrl.InsertColumn(1, "关系", LVCFMT_LEFT, rect.Width());
	m_listCtrl.InsertColumn(2, "单位", LVCFMT_LEFT, rect.Width());
	m_listCtrl.InsertColumn(3, "照片", LVCFMT_LEFT, rect.Width());
	//二级类别不用来显示,别有它用所以设为0
	m_listCtrl.InsertColumn(4, "二级类别", LVCFMT_LEFT, rect.Width());

我们先看一下,下边几个宏的定义:

#define GWL_WNDPROC         (-4)
#define GWL_HINSTANCE       (-6)
#define GWL_HWNDPARENT      (-8)
#define GWL_STYLE           (-16)
#define GWL_EXSTYLE         (-20)
#define GWL_USERDATA        (-21)
#define GWL_ID              (-12)


// begin_r_commctrl
#define LVS_ICON                0x0000
#define LVS_REPORT              0x0001
#define LVS_SMALLICON           0x0002
#define LVS_LIST                0x0003
#define LVS_TYPEMASK            0x0003
#define LVS_SINGLESEL           0x0004
#define LVS_SHOWSELALWAYS       0x0008
#define LVS_SORTASCENDING       0x0010
#define LVS_SORTDESCENDING      0x0020
#define LVS_SHAREIMAGELISTS     0x0040
#define LVS_NOLABELWRAP         0x0080
#define LVS_AUTOARRANGE         0x0100
#define LVS_EDITLABELS          0x0200

#define LVS_EX_GRIDLINES        0x00000001
#define LVS_EX_SUBITEMIMAGES    0x00000002
#define LVS_EX_CHECKBOXES       0x00000004
#define LVS_EX_TRACKSELECT      0x00000008
#define LVS_EX_HEADERDRAGDROP   0x00000010
#define LVS_EX_FULLROWSELECT    0x00000020 // applies to report mode only
#define LVS_EX_ONECLICKACTIVATE 0x00000040
#define LVS_EX_TWOCLICKACTIVATE 0x00000080
#if (_WIN32_IE >= 0x0400)
#define LVS_EX_FLATSB           0x00000100
#define LVS_EX_REGIONAL         0x00000200
#define LVS_EX_INFOTIP          0x00000400 // listview does InfoTips for you
#define LVS_EX_UNDERLINEHOT     0x00000800
#define LVS_EX_UNDERLINECOLD    0x00001000
#define LVS_EX_MULTIWORKAREAS   0x00002000

由此可以看出

dwStyle |= LVS_REPORT LVS_SHOWSELALWAYS LVS_EDITLABELS;这句代码是进行了相应的按位或操作。但是为什么要进行对数据的宏定义,然后还要一这种位运算的方式来操作宏呢?代码的实现部分究竟做了些什么?

未完待续


版权声明:开放

位运算总结(按位与,或,异或)

按位与运算符(&) 参加运算的两个数据,按二进制位进行“与”运算。 运算规则:0&0=0;  0&1=0;   1&0=0;    1&1=1;       即:两位同时为“1”,结果才为“1”...
  • sinat_35121480
  • sinat_35121480
  • 2016年12月07日 23:40
  • 3812

编程中位运算用法总结

位运算应用口诀 清零取反要用与,某位置一可用或 若要取反和交换,轻轻松松用异或 移位运算 要点 1 它们都是双目运算符,两个运算分量都是整形,结果也是整形。          2 "  ...
  • y990041769
  • y990041769
  • 2013年10月23日 19:45
  • 17749

关于位运算加法对于负数也成立的我的理解

public static int add( int number_1, int number_2 ) { int sum = 0; int carry = 0; do { s...
  • u014237408
  • u014237408
  • 2014年05月15日 19:22
  • 642

位运算的应用与技巧:

位运算的应用: 程序中的所有数在计算机内存中都是以二进制的形式储存的。所谓位运算,就是直接对整数在内存中的二进制位进行操作,一般解题时都用一个十进制整数来代表某个集合。 基本的位运算操作: &(按...
  • consciousman
  • consciousman
  • 2016年10月15日 21:24
  • 869

位运算的理解

昨天写了篇有关集合的东西,中间用到了位运算,看起来还是有点纠结的,今天在这里详细解释一下。 (欢迎转载,转载请注明出处,谢谢。) 一、有关位运算的基础知识总结 位运算包括:&(与)、|(或)...
  • qq_34424731
  • qq_34424731
  • 2017年04月17日 20:57
  • 350

java的位运算解析(&/|/~/^/>>/<</>>>)

java的位运算解析(&/|/~/^/>>/
  • lazyman_54
  • lazyman_54
  • 2016年04月29日 17:46
  • 919

lua封装的位运算

1.移位运算基础 --与 同为1,则为1 --或 有一个为1,则为1 --非 true为 false,其余为true --异或 相同为0,不同为1 --ZZMathBi...
  • themagickeyjianan
  • themagickeyjianan
  • 2016年09月23日 17:45
  • 3470

只用位运算来实现整数的加减乘除四则运算

问题一: 位运算实现加法 问题二:只用加法实现减法、乘法、除法 问题三:只用加法实现1+2+3+...+n,(循环、判断语句也不用) 下面逐一解决: 问题三: 方法1:只用...
  • luckyjoy521
  • luckyjoy521
  • 2013年09月05日 22:21
  • 4515

常见的位运算用法总结

本文是准备找工作过程中关于位运算的一些积累和记录的整理。注意:部分位运算的处理结果依赖于变量所属类型的字长,使用时请结合具体环境修改。   1.XOR应用 性质:满足交换率、结合律,...
  • benpaobagzb
  • benpaobagzb
  • 2016年03月03日 17:40
  • 345

【位运算经典应用】 标志位与掩码

原文地址:http://www.cnblogs.com/zichi/p/4792589.html?utm_source=tuicool&utm_medium=referral 前面我们已经了解了六大...
  • laxian2009
  • laxian2009
  • 2016年11月09日 10:44
  • 616
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:位运算
举报原因:
原因补充:

(最多只允许输入30个字)