`
bliuqing
  • 浏览: 66483 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
最近访客 更多访客>>
社区版块
存档分类
最新评论

C移位

阅读更多
【转】
C提供了六种位运算运算符;这些运算符可能只允许整型操作数,即char、short、int和long,无论signed或者unsigned。
& 按位AND
| 按位OR
^ 按位异或
<< 左移
>> 右移
~ 求反(一元运算)
按位与操作&通常用于掩去某些位,比如
n = n & 0177;
使得n中除了低7位的各位为0。
按位或操作|用于打开某些位:
x = x | SET_ON;
使得x的某些SET_ON与相对的位变为1。
按位异或操作^使得当两个操作数的某位不一样时置该位为1,相同时置0。
应该区分位操作符&、|与逻辑操作符&&、||,后者从左到右的评价一个真值。比如,如果x为1、y为2,那么x & y为0,而x && y为1。
移位运算符<<和>>将左侧的操作数左移或者右移右操作数给定的数目,右操作数必须非负。因此x << 2将x的值向左移动两位,用0填充空位;这相当于乘4。右移一个无符号数会用0进行填充。右移一个带符号数在某些机器上会用符号位进行填充(“算数移位”)而在其他机器上会用0进行填充(“逻辑移位”)。
单目运算符~对一个整数求反;即将每一个1的位变为0,或者相反。比如
x = x & ~077
将x的后六位置0。注意x & ~077的值取决于字长,因此比如如果假设x是16位数那么就是x & 0177700。这种简易型式并不会造成额外开销,因为~077是一个常数表达式,可以在编译阶段被计算。
作为一个使用位操作的实例,考虑函数getbits(x,p,n)。它返回以p位置开始的n位x值。我们假设0位在最右边,n和p是正数。例如,getbits(x,4,3)返回右面的4、3、2位。
/* getbits: 返回从位置p开始的n位 */
unsigned getbits(unsigned x, int p, int n)
{
return (x >> (p+1-n)) & ~(~0 << n);
}
表达式x >> (p+1-n)将需要的域移动到字的右侧。~0是全1;将其左移n为并在最右侧填入0;用~使得最右侧n个1成为掩码。
分享到:
评论

相关推荐

    C语言移位实现加减乘除

    ### C语言移位实现加减乘除 #### 概述 在计算机科学中,移位操作是一种高效且基本的操作方式,常被用于替代传统的算术运算。本文将深入探讨如何利用C语言中的移位操作来实现加减乘除四种基本运算,并通过具体的...

    SystemChange(c语言移位操作实现的10进制到16进制和2进制的转换)

    在给定的项目"SystemChange(c语言移位操作实现的10进制到16进制和2进制的转换)"中,开发者可能使用了这样的方法,并在VS2008环境下编写了代码。由于代码描述为"代码比较清秀,看了不后悔",我们可以预期代码的可读性...

    C语言的移位操作

    关于C语言位操作,左移时总是移位和补零。右移时无符号数是移位和补零,此时称为逻辑右移;而有符号数大多数情况下是移位和补最左边的位(也就是补最高有效位),移几位就补几位,此时称为算术右移。

    移位加密算法C语言源代码

    移位加密的C语言实现,比较完备的,可以参考参考

    单片机C语言程序设计 K1-K4 控制LED移位(有源码)

    单片机C语言程序设计 K1-K4 控制LED移位(有源码)单片机C语言程序设计 K1-K4 控制LED移位(有源码)单片机C语言程序设计 K1-K4 控制LED移位(有源码)单片机C语言程序设计 K1-K4 控制LED移位(有源码)单片机C语言程序...

    C语言中的移位操作技巧

    ### C语言中的移位操作技巧 #### 一、概述 在C语言中,位操作是一项非常重要的技术,尤其是在处理硬件接口、低级编程以及优化算法性能等方面。位操作包括位的移动(移位)、位的逻辑运算等。本文将重点介绍几种...

    C语言凯撒移位加密算法

    c语言编写,欢迎扔板砖 //移位算法 #include #include #define SIZE 50 int main() { //i 用于计数输入个数,j 为临时变量, plain 存放明文, cipher 存放密文,decryption存放解密后文本,fpp 为明文文件指针,...

    单片机C语言程序设计K1-K4 控制LED移位(基于8051+Proteus仿真)

    单片机C语言程序设计K1-K4 控制LED移位(基于8051+Proteus仿真)单片机C语言程序设计K1-K4 控制LED移位(基于8051+Proteus仿真)单片机C语言程序设计K1-K4 控制LED移位(基于8051+Proteus仿真)单片机C语言程序设计...

    205 字符串字母移位 C语言源代码文件

    205 字符串字母移位 C语言源代码文件

    C语言之移位操作

    C语言很多操作都是以字节为单位进行的,但有时为了节约空间,很多系统程序中要求在比特位级别进行运算处理。C语言一同提供了六种位运算的运算符,分别为&(按位与),|(按位或),~(按位取反),^(按位异或),&...

    单片机C语言程序设计 K1-K4 控制数码管移位显示(有源码)

    K1-K4 控制数码管移位显示(有源码)单片机C语言程序设计 K1-K4 控制数码管移位显示(有源码)单片机C语言程序设计 K1-K4 控制数码管移位显示(有源码)单片机C语言程序设计 K1-K4 控制数码管移位显示(有源码)单片机C

    C实现移位加密与解密系统

    在这个项目中,我们关注的是一个使用C语言实现的移位加密和解密系统。移位加密是一种简单但有效的密码学技术,它通过将明文中的字符按照一定的位数进行移动来创建密文。这种加密方法在早期通信中被广泛应用,虽然...

    c语言左右循环移位c语言左右循环移位.docx

    ### C语言左右循环移位详解 #### 一、引言 在计算机科学与技术领域,尤其是在数字信号处理、加密解密算法以及硬件编程等场景中,位操作是极为常见的技术手段之一。C语言作为一种底层语言,提供了丰富的位操作功能...

    C语言的循环移位操作

    ### C语言中的循环移位操作 在计算机科学与编程领域,循环移位(或称为循环移位、循环移位)是一种常见的数据处理方法,尤其是在低级编程和算法优化中经常用到。本篇文章将深入探讨如何在C语言中实现循环左移和循环...

    294-用指针数组控制P0口8位LED流水点亮单片机C语言源码.zip项目程序C语言源码下载

    294-用指针数组控制P0口8位LED流水点亮单片机C语言源码.zip项目程序C语言源码下载294-用指针数组控制P0口8位LED流水点亮单片机C语言源码.zip项目程序C语言源码下载 1.合个人学习技术做项目参考 2.适合学生做毕业设计...

    C语言中关于字符串左右循环移位的问题

    C语言中关于字符串左右循环移位的问题 C语言中关于字符串左右循环移位的问题是一个经典的编程题型,今天我们将对其进行详解,并给出两种方法求解。 首先,让我们来解决字符串循环右移的问题。方法一:利用已有的...

    移位密码原理及算法实现

    移位密码是一种单表代换密码,它的加解密过程可以用以下方式表示:C=Ek(s)=(s+k) mod n, S=Dk(c)=(c-k) mod n,其中,c 表示密文字符,s 表示明文字符,k 表示移位的数字,n 表示代换字符集的字符总个数。移位密码...

    单片机C语言程序设计14 K1-K4 控制数码管移位显示(基于8051+Proteus仿真)

    单片机C语言程序设计14 K1-K4 控制数码管移位显示(基于8051+Proteus仿真)单片机C语言程序设计14 K1-K4 控制数码管移位显示(基于8051+Proteus仿真)单片机C语言程序设计14 K1-K4 控制数码管移位显示(基于8051+...

    C51之移位运算

    在C51单片机中,可以使用RR、RRC、RL、RLC等指令来实现移位运算,而在C语言中,可以使用和&gt;&gt;等运算符来实现移位运算。 1. 移位运算的实现 在C51单片机中,可以使用RR、RRC、RL、RLC等指令来实现移位运算。例如,...

    反馈移位寄存器和对偶移位寄存器

    密码实验:反馈移位寄存器和对偶移位寄存器的实现

Global site tag (gtag.js) - Google Analytics