读书笔记-C语言程序设计-西安电子科技大学出版社-王娟勤-【未完待续】

本文介绍了C语言程序设计中位运算的原理与应用,包括位取反、位与、位或、位异或、位移操作,并探讨了位段的使用。同时,讲解了编译预处理的概念,如#include、#define和条件编译,以及头文件的查找路径和宏定义的工作机制。
摘要由CSDN通过智能技术生成

C语言程序设计 王娟勤 西安电子科技大学出版社

ISBN-9787560636702

自建索引, 仅供参考, 以备后查

 

 

 

九、位运算

C语言提供6种基本位运算功能:位取反(单目运算)、位与、位或、位异或、位左移和位右移。

(1)位运算只能是 整型(int) 或 字符型(char),不能为实数型数据。

(2)位运算是对运算量的每一个 二进制位 分别进行操作。


位与:同为 1 时结果才为 1。可用来保留特定位

  7 : 0111   (若3个1从右向左代表可读、可写、可执行),则检查是否可执行时

&4 : 0100

--------------

= 4 : 0100 > 0 此时值>0,时可执行

0 & 0 = 0 0 & 1 = 0 1 & 0 = 0 1 & 1 = 1

位或:存在 1 时结果就为 1。可用来设置指定位为1

  1 : 0001  各二进制位意义同上,仅只读,若加入可执行则

|  4 : 0100

--------------

= 5 : 0101  此时拥有 可读和可执行权限

0 | 0 = 0 0 | 1 = 1 1 | 0 = 1 1 | 1 = 1

位异或:相等时结果为 0 ,不同时为 1。可用作加密,加密解密异或同一字符

    86 : 0101 0110

  ^31 : 0001 1111

--------------------------

   73 : 0100 1001

0 ^ 0 = 0 0 ^ 1 = 1 1 ^ 0 = 1 1 ^ 1 = 0

位取反:1 变 0 ,0 变 1。

注意数据长度,如int是32位,高位所有零全变1了,即正变负,负变正。

~7 (0000 0000 0000 0111) = -8 (1111 1111 1111 1000)

~0 = 1 ~1 = 0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

/// C 语言实现:无需临时变量,交换两数的值
#include <stdio.h>
void main() 
{
    int a = 3;
    int b = 4;
    a = a ^ b;
    b = a ^ b;
    a = a ^ b;
    printf("a = %d, b = %d", a, b);
}

/// Java 语言实现:无需临时变量,交换两数的值
@Test
public void swapIntegersWithoutAnotherVariable() {
	
	int a = 3, b = 4;
	System.out.format("a = %d, b = %d  %n", a, b);
	
	/// do swap ///
	a = a ^ b;
	b = a ^ b;
	a = a ^ b;

	System.out.println("------------------");
	System.out.format("a = %d, b = %d  %n",
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值