`

[转]C语言位运算学习

阅读更多

Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1449611

C语言中提供给开发人员一种位的运算,这种位的运算常用在检测和控制领域中,这和c语言的特性关系非常大,因为c语言是具有高级语言的特点和低级语言的功能,能完成一些汇编语言所能完成的功能。给开发人员提供了一定的简便。


【运算符】位运算中有6中运算符【&,|,^,~,<<,>>】分别是按位与,按位或,按位异或,取反,左移,右移。
其中除了~,其他都是二目元,而且在运算中的运算量只能是整形或者是字符型,绝对不能有实型出现。
当然在运算中,所有的运算量都应该是binary.
下面分别来比较各种运算符:
【一】:按位与“&”,当二个运算量中相应的二进制位都为1的时候,则该位才是1,否则其他就是0;
           如果是负数参加运算,则应该是以补码的形式表示为二进制,然后再进行按位的与的运算;
           按位与的一些作用:
           1:清零       2:取一个数中的某些指定位       3 :保留某个数中的制定位

【二】:按位或“|”,当二个运算量中相应的二进制位为1的时候,则该位运算结果是1,否则其他就是0;
【三】:按位异或“^”,该运算也称XOR运算符,二个二进制位同号,该位运算的结果则是0,异号则为1;
    两个相应是否为“异”,为“异”就取值1,否则为假0;
           按位异或的一些作用:
    1:使特定的位翻转    2:与0相^,保留原值      3:交换两个值,不用临时变量
【四】: “取反”运算符,是一个单目元,用来对一个二进制数按位取反,对任何一个数应该先转化位二进制,再进行取反;这里值得一提的是取反的法则,就是将数据中的 某位中的1变成0,0变成1,但是应该注意一点是将C的source移植到32位存放一个整数的计算机系统上的过程。为了使移植性加强,我们可以取得某一 位时该数&&某数时,可以采用a=a&~1【举个例子】这种方法来取得最后一位。切记取反与正负号运算是不同的。
    ~运算符的优先级别比算术运算符,关系运算符,逻辑运算符和其他位运算符都高。
【五】: “左移运算符”,是指将一个数的各个二进位全部左移若干位,左移的过程中右边则补0,高位溢出舍弃不用。一般情况下【不包括左移高位溢出舍弃的数中不包含 1的情况】左移N位后,使该数变成原来数的2的n次方倍。对于左移舍弃位中包含1的情况下,日后查询资料后再做研究:)
【六】:“右移运算符”, 与左移运算相反,右移使原来的数缩小到原来数的2的n次方。但是应该注意右移的过程中要注意符号位的问题。对于无符号数,右移时左边高位移入0,对于有符 号的值,如果原来符号为0【正数】,则左边也是移入0,如果时1【负数】,左边移入1,还是0这个就要取决所用到的计算机系统,移入0时称为【逻辑右 移】,移入1时称为【算术右移】

最后对于不同长度的数据进行位运算的过程方法是:
系统一般都是采取右端对齐,例如:a&b,a位long,b为int,如果b为正数,左侧16位补满0,b为负数,左端应该补满1,b为无符号整数型,左侧填满0。

自 己的一些见解:在位运算过程中,或者用到位标识的时候,一般都是针对该数二进制数的某一位进行运算,特别在通讯领域,系统本身就是要求缩减系统的大小。位 的使用就恰恰使这块得到广阔的使用空间。比如我们在一般的应用开发软件中,设置相应的”开关“,一般都是用布尔型或者使用一个short int型进行标识,但是在使用位的运算中,可以使用一个由几位组成的一个二进制数,由其中1位或者几位组成一个”开关“,所以说位的使用对于系统大小有严 格要求的有一定的优势。




分享到:
评论

相关推荐

    一个c语言 位运算 的程序

    ### C语言位运算程序解析及知识点详解 #### 标题:一个C语言位运算的程序 本程序主要展示了如何在C语言中运用位运算来实现数据处理与转换的基本方法。位运算是指直接对二进制位进行操作的运算方式,在计算机科学中...

    c语言位运算学习程序

    有很多初学C语言的人对于 位运算概念不容易弄清楚, 希望我的这个程序能有所帮助。

    C语言位运算

    C语言位运算,ppt,可以用来教学和学习,内容充实,可靠,有助于C语言的学习。

    矩阵运算 c语言实现_c语言矩阵运算库_

    在IT领域,矩阵运算在许多计算密集型任务中扮演着重要角色,比如图像处理、机器学习、数值模拟和信号处理等。C语言由于其高效和灵活性,常常被用来编写底层的矩阵运算库。本篇文章将深入探讨如何在C语言中实现矩阵...

    C语言 位运算PPT课件.pptx

    C语言位运算PPT课件 C语言位运算是编程语言中的一种重要操作,通过位运算符可以对二进制数进行操作,达到不同的目的。本PPT课件详细讲解了C语言中的位运算符,包括按位与、按位或、按位异或、按位求反、左移和右...

    C语言 位运算 链表 课件

    在IT领域,C语言是一种基础且强大的编程语言,被广泛应用于系统编程、嵌入式开发以及各种软件...这个“C语言 位运算 链表 课件”会是一个宝贵的资源,帮助学习者深入理解这两个主题,并通过实例加深对理论知识的理解。

    C语言 大数运算(无限大小)头文件

    C语言大数运算(无限大小)头文件 本资源是一个C语言的大数运算头文件,支持无限大小的整数运算,包括加减乘除、余数、比较运算符等。该头文件提供了一个名为`longint`的类,重载了多种符号,支持char*、string、...

    C语言矩阵运算库最后版_stm32等嵌入式平台用

    工作学习上都需要用到C语言裸机下运算矩阵,找了一些库不是很理想; 浏览了上述博客中博主的程序,发现他 @shuoyueqishilove 写得很清晰, 简明易懂;不过原程序无法直接达到我想在stm32上运行的需求,安全性 也有很...

    C语言程序设计位运算PPT课件.pptx

    C语言程序设计位运算PPT课件 本PPT课件主要讲解了C语言程序设计中的位运算,包括二进制表示、按位与、按位或、异或等操作。下面是该课件的详细知识点: 一、整数的二进制表示 * 整数在计算机中以补码表示 * 正数...

    C语言位运算.pdf

    C语言的位运算是一种在计算机科学中非常基础且强大的操作,它允许程序员直接对数据的二进制位进行处理。...因此,熟练掌握C语言的位运算对于任何想深入学习计算机系统和编程的开发者来说都是必要的。

    C语言数值运算经典源码

    "C语言数值运算经典源码"这个主题包含了C语言中处理数字的基本操作和算法,对于初学者来说是非常有价值的学习资源。下面我们将深入探讨C语言在数值运算方面的核心知识点。 1. 基本数据类型:C语言提供了多种基本...

    C语言的矩阵运算库。(阵运算库--C语言)_C_下载.zip

    在C语言中,矩阵运算库通常用于处理二维数组...无论是学习基础的矩阵运算,还是进行复杂的数值计算,这样的库都是十分有用的工具。在实际应用中,开发者可以根据需求对其进行定制和扩展,以满足特定场景下的计算要求。

    C语言位运算和sizeof运算符详解

    C语言中的位运算和`sizeof`运算符是程序员在处理底层数据和优化代码时不可或缺的工具。位运算允许我们直接操作整数的二进制位,而`sizeof`运算符则用于获取数据类型或变量在内存中占用的字节数。 1. **位运算** - ...

    C语言数据运算PPT学习教案.pptx

    学习C语言的数据运算,不仅要理解每个运算符的用法,还要掌握它们的优先级和结合性,以便正确构造和评估表达式。同时,了解自动类型转换和强制类型转换的规则、前置递增和后置递增运算符的差异以及逻辑表达式的短路...

    C语言中的数组运算

    在C语言中,数组是一种非常基础且重要的数据结构,它允许程序员存储一...数组是C语言的基础,理解和掌握它们对于深入学习和使用C语言至关重要。在编程实践中,应灵活运用数组,同时注意避免数组越界和内存泄漏等问题。

    c语言进阶 玩转C语言

    3. **位运算**:C语言提供了对二进制位的直接操作,包括按位与、或、异或、非及左移、右移等。这些运算在硬件接口编程、数据压缩等领域非常有用。 4. **预处理器宏和条件编译**:预处理器宏可以进行文本替换,条件...

    基于c语言编写的矩阵运算源代码

    在编程领域,C语言是一种广泛使用的底层...通过学习和实践这些C语言编写的矩阵运算源代码,开发者不仅可以掌握矩阵运算的理论,还能提升在实际项目中应用这些算法的能力,尤其是在科学计算、图像处理、机器学习等领域。

    C语言实现计算器简单混合运算

    在本项目中,"C语言实现计算器简单混合运算" 是一个使用C语言编写的程序,旨在创建一个能够处理基本数学运算的简易计算器。混合运算意味着它不仅支持加法、减法,还支持乘法和除法,甚至可以处理带有括号的运算...

    C语言程序设计提高篇位运算PPT学习教案.pptx

    【C语言程序设计提高篇位运算】是编程学习中的一个重要环节,主要涉及到计算机底层操作,尤其是在处理硬件控制和高效算法时。位运算涉及到对数据的二进制位进行操作,这是计算机内部处理数据的基本方式。在C语言中,...

    第三C语言讲解位运算PPT学习教案.pptx

    位运算在C语言中扮演着重要的角色,尤其在编写系统软件和底层编程时,它们能够直接操作二进制位,提供了高效的数据处理能力。位运算包括按位与(&)、按位或(|)、异或(∧)以及按位非(~)等操作,这些运算符都是基于二...

Global site tag (gtag.js) - Google Analytics