位操作

✍ dations ◷ 2025-11-27 00:27:18 #计算机算术,程序架构,布尔代数,二进制算术

位操作是程序设计中对位模式或二进制数的一元和二元操作。在许多古老的微处理器上,位运算比加减运算略快,通常位运算比乘除法运算要快很多。在现代架构中,情况并非如此:位运算的运算速度通常与加法运算相同(仍然快于乘法运算)。

取反是一元运算符,对一个二进制数的每一位执行逻辑反操作。使数字1成为0,0成为1。例如:

NOT 0111(十进制7)  = 1000(十进制8)

许多程序设计语言(包括C程序设计语言family),取反操作符用波浪线"~"表示。值得注意的是此操作符与"逻辑非(!)"操作符不同。在C++中,逻辑非将数字整体看做一个布尔类型--将真值转化为假,将假值转化为真;而C语言将0转化为1,将非零值转化为0。"逻辑非"并不是一个位操作。

按位或处理两个长度相同的二进制数,两个相应的二进位中只要有一个为1,该位的结果值为1。例如

   0101(十进制5)OR 0011(十进制3) = 0111(十进制7)

在C类程序设计语言中,按位或操作符是"|"。这一操作符需要与逻辑或运算符(||)区别开来。

按位或能够将每一位看做旗帜;在二进制数中的每一位可以表示不同的布尔变量。应用按位或操作可以将二进制数的某一位设为1。例如

0010(十进制2)

能够看做包含4个旗帜的组合。第1,2,4旗帜为0;第3个旗帜为1。利用按位或可以将第1个旗帜设置为1,而其他旗帜不变。

   0010(十进制2)OR 1000(十进制8) = 1010(十进制10)

这一技巧通常用来保存程序中的大量布尔变量。

按位异或运算,对等长二进制模式或二进制数的每一位执行逻辑异或操作。操作的结果是如果某位不同则该位为1,否则该位为0。例如

    0101XOR 0011  = 0110

在类C语言中,按位异或运算符是"^"。

汇编语言的程序员们有时使用按位异或运算作为将寄存器的值设为0的捷径。用值的自身对其执行按位异或运算将得到0。并且在许多架构中,与直接加载0值并将它保存到寄存器相比,按位异或运算需要较少的中央处理单元时钟周期。

按位异或也可以用于在比特集合中切换旗帜。给出一个比特模式,

0010

第一和第三位能够通过按位异或运算使用同时切换。

    0010XOR 1010  = 1000

这一技巧可用于操作表示布尔变量的比特模式。

按位与处理两个长度相同的二进制数,两个相应的二进位都为1,该位的结果值才为1,否则为0。例如:

    0101AND 0011  = 0001

在类C语言中,按位与用'&'表示

移位是一个二元运算符,用来将一个二进制数中的每一位全部都向一个方向移动指定位,溢出的部分将被舍弃,而空缺的部分填入一定的值。在类C语言中,左移使用两个小于符号"<<"表示,右移使用两个大于符号">>"表示。

应用逻辑移位时,移位后空缺的部分全部填0。

   0001(十进制1)<<    3(左移3位) = 1000(十进制8)
   1010(十进制10)>>    2(右移2位) = 0010(十进制2)

Java中的移位

JAVA中有一个特有的无符号右移操作符“>>>”。此操作将忽略操作数的符号,同样的还有“>>>=”。

相关

  • 角斗士角斗士(拉丁语:gladiatōrēs),指的是古罗马竞技场上的斗士,台湾也译为剑斗士,名称来源自于古罗马军团惯用的剑,是古罗马奴隶社会的一种身份特殊的奴隶,通常都是战俘或其他犯了过错
  • 参孙与大利拉《参孙和大利拉》改编自《圣经·旧约·士师记》第十三章至第十六章中有关希伯莱英雄参孙的故事,是一部由法国作曲家圣桑创作的大型歌剧,于1877年在德国首次公演。这部歌剧是圣
  • 2012年夏季残疾人奥林匹克运动会第十四届夏季残疾人奥林匹克运动会,于2012年8月29日至9月9日于英国伦敦举行。根据身体障碍人士的特点,残奥会共设置20个项目:*  主办方(英国)位于伦敦东部的斯特拉特福(Stratford
  • “十三副遗甲”起兵复仇十三副遗甲起兵是努尔哈赤起兵叛明的历史事件,因其祖父与父亲被平乱的明朝总兵误杀,努尔哈赤遂以先人留下的“十三副遗甲”起兵复仇,开始了其建国称汗、征战一生之路。努尔哈赤
  • 厄玛奴耳三世·德利厄玛奴耳三世·德利(阿拉伯语:مار عمانوئيل الثالث دلّي‎;1927年10月26日-2014年4月8日)是伊拉克籍天主教主教级枢机及加色丁礼天主教巴比伦宗主教区宗主
  • .an.an是分配给荷兰海外属地荷属安地列斯使用的国家和地区顶级域名,于1993年启用。2010年荷属安地列斯解体后,.an域名逐渐淡出使用。2015年,.an域名完全停止使用。.an域名于1993年
  • 凝固点降低凝固点降低是指将溶质加入溶剂时,溶剂的凝固点降低的现象。 例如,在水中加入盐或酒精,以及两种固体杂质以粉末形式的混合(在这种情况中,被加入的混合物作为溶质,原固体视为溶剂)。
  • 乞丐宴会唱片乞丐宴会唱片 是一个英国独立音乐唱片品牌,开始是一个连锁唱片厂牌由马丁米尔斯和尼克奥斯汀所拥有。
  • 南岭小檗南岭小檗(学名:)为小檗科小檗属的植物,为中国的特有植物。分布于中国大陆的四川、广西、江西、广东、湖南等地,生长于海拔1,400米至2,800米的地区,一般生于灌丛中、路边、山顶阳处
  • 中华吻状蛤中华吻状蛤(学名:),是弯锦蛤目弯锦蛤科弯锦蛤属的一种。主要分布于南中国海和东中国海水深60米左右细颗粒软泥沉积物。