C语言**位运算**终极剖析

本文深入探讨C语言中的位运算,包括二进制、符号表示、位逻辑运算及移位运算。位运算在硬件控制、压缩和加密等方面发挥重要作用,使得C语言成为编写设备驱动和嵌入式代码的首选。通过实例讲解了位取反、位与、位或、位异或以及左移和右移操作,特别分析了有符号数在位移运算中的处理方式,强调了移位操作在效率上的优势。
摘要由CSDN通过智能技术生成

C语言有时候被称为中级语言 ,即介于低级与高级之家的编程语言,原因是C语言不仅具有高级语言抽象机制,也具有低级语言直接操作变量个别位的能力,即我们即将要讨论的C语言强大的位 操作运算。C语言的这种能力也许会让你感到奇怪,但这种能力有时确实是必须的,或者至少是有用的,例如我们通常向硬件设备发送一两个字节来控制该设备,其 中的每一位都有特定的含义。许多压缩和加密操作都对单独的位进行操作。高级语言一般不处理这一级别的细节,可C语言在提供高级语言便利的同时也能够在典型的为汇编语言所保留的级别上工作 ,这就是C语言之所以能成为编写设备驱动程序和嵌入式代码首选语言的原因。


在正式进入美妙的主题C语言位运算 的讨论之前,我们必须先了解一些酷炫的背景知识:

一、二进制

说到计算机当然不能不知道二进制,就像玩吉他不能不知道五线谱一样,所谓二进制就是逢二进一 ,我们日常用的是十进制,逢十进一。另外,十进制的数字每一位对应一个10的某次幂,二进制的数字每一位对应一个2的某次幂。比如:

    (5017)10 = 5 *103 + 0 *102 + 1 *101 + 7 *100 = 5000 + 0 + 10 + 7 = (5017)10

    (1101)2    = 1 *23 +1 *22 + 0 *21 + 1 *20 = 8 + 4 + 0 + 1 = (13)10

二进制系统可以用1、0序列表示任何整数,这种系统非常始于数字计算机使用,数字计算机使用打开和关闭状态的组合来表示信息,二这些状态可以使用1和0来表示。

 

我们的计算机内部是怎么用二进制系统表示数字17的呢?通过简单的计算我们知道(57)10 = 32 + 16 + 8 + 1 = (0111 1001)2 ,即计算机中使用0111 1001这样一串数字表示十进制的57,因此在存储器上就有类似于如下的结构:

     |0 |1 |1 |1 |

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值