按位运算符操作

C语言中提供了6个位操作符。这些运算符只能作用于整形操作数,即只能作用于带符号或者无符号的char、short、int、long类型:

& 按位与(AND)
| 按位或(OR)
^ 按位异或(XOR)
<< 左移
>> 右移
~ 按位取反(一元运算符)

下面以整形int为例进行说明(为了便于说明,设置二进制只有8位):

#include "stdio.h"

int main(int argc, char const *argv[])
{
    // 位操作符,只能作用于带符号,或则无符号的基本数据类型
    int n = 4;
    // 4的二进制表示为100
    printf("%d\n", n & ~0);     //按位与100 & 11111111 = 00000100 即4

    printf("%d\n", n | ~0);     //按位或100 | 11111111 = 11111111
                                //为负数,减1取反得00000001 即-1

    printf("%d\n", n ^ ~0);     //按位异或100 ^ 11111111 = 11111011
                                //为负数,减1取反得00000101 即-5

    printf("%d\n", n << 2);     //左移两位得00010000 即4 * (2^2) = 16
    printf("%d\n", n >> 2);     //右移两位得00000001 即1
    printf("%d\n", ~n);         //取反的11111011 即-5
    return 0;
}

按位运算符操作

时间: 2024-08-01 05:46:55

按位运算符操作的相关文章

九、运算符之按位运算符

using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace _9.运算符之按位运算符 {     class Program     {         static void Main(string[] args)         {             sbyte a = 65, b = -17;                          //  6

OC成长之路 &lt;一&gt; 位运算符、枚举、(原码,补码,反码)、以及NSInteger,NSUInteger,int的区别

引言: 咳咳,首先我是一枚资深小白(资深小白- -.也太衰),这个博客是自己用来记录迷糊犯二的东西. 最近发现难道是因为老了么(我明明18....),很多东西,脑子已经不记得了,迷迷糊糊,概念理论的东西脑子里面七零八落. 从一个知识点跳到另一个知识点,简直是连环事故. ??sad. 傲娇的我不服,决心要认认真真做好笔记,记录期间遇见的种种. 生活要有仪式感,学习应该也是要这样,作为Chapter 1 ,应该要起个好名字. 想了几十分钟,还是随便一些吧. 那就叫: OC成长之路 okok,来开始今

C语言的各种位运算符的操作简述

运算符: 算术运算符: + , - , * , / , % , ++ , -- 符合运算符: += , *= , /= , %= 条件运算符:  ? : 关系运算符: == , >= , <= , != , > , < 逻辑运算符: && , || , ! 赋值运算符: = 其他运算符: * , & , -> , . 位运算符: 1 > 按位与 &同时为一则为一 否则为零 3 & 5结果为 1(先将两个数化为二进制在进行计算) 3

Java的算数运算符、关系运算符、逻辑运算符、位运算符

Java的运算符,分为四类:                           算数运算符.关系运算符.逻辑运算符.位运算符.                           算数运算符:+  -  *  /  %  ++  --                           关系运算符:==  !=  >  >=  <  <=                           逻辑运算符:&&  ||  !  ^  &  |        

SQL之运算符操作

算数运算符: 用select可以实现加减乘除,求模操作等: SELECT 6+4 加法操作,     6-4 减法操作,     6*4 乘法操作,     6/2 除法操作,     6 DIV 2 除法操作,     6%4 求模操作,     6 MOD 4 求模操作; 除此之外,还可以直接对表中的属性进行操作: SELECT ename 雇员,sal  月工资,sal*12 年薪     FROM t_employee; 比较运算符: 如果符合条件,返回1,否则返回0: SELECT 1

Java 中的按位运算操作

我是木龙小驴,菜鸟一枚,这里发点文字,大家共同学习交流 位运算符无非就是<<  还有 >> 以及>>> 首先很久很久以前,那时候没有操作系统,只有电,计算机运算跟开关点灯差不多,亮代表开,不亮代表关,然后根据电压的高低来进行记录操作. 所以CPU进行所有处理都是二进制的,也就是1 和 0 组成,比如说十进制的1 就是0001 ,2就是0010,3就是0011. 二进制就是逢二进一,当一个数字,或者是字符,或者是什么东西(在计算机运算时都是二进制)如:0010 00

Java功底篇系列-03-一些位运算符你会如何理解?

话题一:异或 先看一段代码吧: 这段代码是用来实现a,b交换的. 异或是位运算符,0^1为1,其他情况都是0,这是一个加法不进位的功能! 这有什么用呢? 其实通过上面交换的例子,我们已经明白A^B^A将得到B,也就是可以实现数据还原的功能! 话题二:%与& 如果有一堆数据,我们想将这些数据通过HASH的方式,放入到桶中. 我们可以将桶进行编号,比如0号,1号,...N号桶. 给我们一个数据,我们要完成这个数据和桶的序号的映射转化关系,这样放入和查找就可以了. 由于对于任何一个非负数A,进行A%B

(原创)c#学习笔记04--流程控制01--布尔逻辑02--按位运算符

4.1.2  按位运算符 &和 | 运算符还有一个作用:对数值执行操作.以这种方式使用时,它们处理的是变量中存储的一系列位,而不是变量值,因此它们称为按位运算符. 下面先讨论&和 |.&运算符第一个操作数中的每个位都与第二个操作数中相同位置上的位进行比较,在得到的结果中,各个位置上的位如表4-5所示. | 运算符与此类似,但得到的结果位是不同的.如表4-6所示. ^运算符的用法与此相同.如果操作数中相同位置上的位有且仅有一个是1,其结果位就是1,如表4-7所示. C#中还可以使用一

JavaScript的位运算符、赋值运算符、其他运算符、三元运算符、运算符优先级

一. 位运算符 在一般的应用中,我们基本上用不到位运算符.虽然,它比较基于底层,性能和速度会非常好,而就是因为比较底层,使用的难度也很大,底层运算是转换成二进制进行运算的. 位运算符有七种,分别是:位非 NOT(~).位与 AND(&).位或 OR(|).位异或 XOR(^).左移(<<).有符号右移(>>).无符号右移(>>>). var box = ~25; //-26 var box = 25 & 3; //1 var box = 25 |