您的位置  > 互联网

(每日一题)化学实验基本操作(7页珍藏版)

1. C 语言位运算符:与、或、异或、求反、左移、右移 语言位运算符:与、或、异或、求反、左移、右移运算以二进制运算进行。 在系统软件中,经常需要处理二进制位问题。 C语言提供了6位操作符。 这些运算符只能与整数操作数一起使用,即它们只能与有符号或无符号 char、short、int 和 long 类型一起使用。 C 语言提供的位运算符列表: 运算符含义说明 & 按位与 如果对应的两个二进制位都为 1,则该位的结果值为 1,否则为 0 | 对应的两个二进制位按位或 只要其中一个为 1,则该位的结果值为 1。如果参与运算的两个二进制位的值相同,则为 0,否则为 1 . 取反是一元运算符,用于对二进制数进行按位运算。 取反就是把0变成1,把1变成0

2、右移将一个数的每个二进制位右移N位,移到右端的低位被丢弃。 对于无符号数,高位填充01。 “按位与”运算符(&) 按位与的意思是: join 将运算的两个数据按照二进制位进行与运算。 如果两个对应的二进制位都是,则该位的结果值为 1; 否则为 0。 这里的1可以理解为逻辑上的真,0可以理解为逻辑上的假。 按位与实际上与逻辑与运算规则相同。 逻辑“AND”要求所有操作数都为真,结果才为真。 如果A=真,B=真,则AB=真。 例如:3&5 3的二进制代码是11(2)。 (为了区分十进制和其他进制,本文规定所有非十进制数据必须在数据后面加上括号,并在括号中标明进制,二进制标记为2)在内存中存储数据的基础知识

3、单位为Byte,一个字节由8位组成。 位是用于描述计算机数据量的最小单位。 在二进制系统中,每个0或1都是一个位。 将 11(2) 补成一个字节是 (2)。 5的二进制代码是101(2)。 将其补成字节为(2)按位与运算: (2)&(2)(2) 可见3&5=1c语言代码: # main( )int a=3;int b = 5;(% d,a&b);按位与的目的: (1) 清除 如果要清除一个存储单元,即使它的所有二进制位都为 0,只要找到一个二进制数,其每一位都满足以下条件: 该位原来的数字是1

4.新数中对应的位为0。然后对两者进行&运算,达到清零的目的。 例:原数是43,即(2),再找一个数,设其为148,即(2),两者进行按位与运算:(2) & (2) (2) C语言源代码:# main()int a=43;int b = 148;(%d,a&b); (2) 获取数字中某些指定的位。 如果有一个整数a(2byte),并且你想得到低字节,只需与8个1进行按位与即可。 a 01100 (3) 保留指定位:带a

5、数字进行“按位与”运算,数字在该位取1。 例如:有一个数字84,即(2),你想保留左起第3、4、5、7、8位。 往下,运算如下: (2)&(2)(2) 即:a=84,b=59 c=a&b=16c 语言源代码:# main()int a=84;int b = 59 ;(%d,a&b);2. “按位或”运算符(|) 只要对应的两个二进制位中有一个为 1,则该位的结果值为 1。借用逻辑中“或”运算的一句话,一个真理就是真。 例如:60(8)|17(8),对八进制60和八进制17进行按位或运算。|1

6. 1111c语言源代码: # main()int a=060;int b = 017;(%d,a|b);应用:按位或运算常用于将a数据的某些位的值设置为1例如:要将一个数字a的低4位改为1,只需要将a与17(8)进行按位或运算即可。 ,不使用临时变量交换两个值。 例如: ,即11(2); ,即 100(2)。 如果想互换sum的值,可以使用下面的赋值语句:ab; 巴; ab;011(2) ()100(2)111(2) (ab的结果,a变成了) ()100(2 )011(2) (ba的结果,b变成了) ()111( 2)100(2)(ab的结果,a变成了)相当于下面两步: 执行前两条赋值语句:

7.“;” 和 ”;” 等价于 b=b(ab)。 然后执行第三条赋值语句: 。 由于a的值等于(),b的值等于(),所以相当于a=,即a的值等于,等于。 太奇妙了! c语言源代码:# main()int a=3;int b = 4;a=ab;b=ba;a=ab;(a=%db=%d,a,b);4. “求反”()是一元运算符,用于求整数的二进制补码,即将操作数的每一个二进制位上的1变成0,将0变成1。例如:77(8)源代码: # main()int a=077;(%d,a);5. 左移运算符() 左移运算符用于将一个数的每个二进制数向左移动一定的位数,移动的位数由右操作数指向

8、肯定(右操作数必须为非负值),右侧空位补0,高位左移溢出时丢弃高位。 例如:将a的二进制数左移2位,右侧空出的位用0填充,左侧溢出的位丢弃。 如果a=15,即(2),左移2位得到(2)。 源代码: # main()int a=15;(%d,a) 右移运算符用于将数字的每个二进制位向右移动若干位。 移动的位数由右操作数指定(右操作数必须为非负值),移动到右端的低位被丢弃,对于无符号数,高位补0。对于有符号数,有些机器会用符号位填充左侧空出的部分(即“算术移位”),而另一些机器会用0填充左侧空出的部分(即“逻辑移位”)。注意:对于无符号数,左侧较高右移时。

9、该位移为0; 对于有符号值,如果原来的符号位为0(即数为正数),则左边也移为0。如果符号位原来为1(即负数),则左边也移为0 0 或 1,取决于所使用的计算机系统。 有的系统将其移至0,有的系统将其移至1。移入0称为“逻辑移位”,即简单移位; 移至 1 称为“算术移位”。 示例:a 的值为八进制数: a:01101(以二进制形式表示) a1:10110(逻辑右移时) a1:10110(算术右移时) 在某些系统中,a1 是八进制数,而在其他 您可能在系统上得到的是。 Turbo C 和其他一些 C 编译器使用算术右移,即当有符号数右移时,如果符号位原来为 1,则左移的高位为 1。 源代码: # main()int a=;(%d,a1); 7. 位运算赋值运算符 位运算符和赋值运算符可以组成复合赋值运算符。 例如:&=、|=、=、=、= 示例:a & = b 相当于 a = a & ba =2 相当于 a = a 2