初识位运算符

初识位运算符

组成

& , |, ^, ~ <<, >>, >>>

初时

        int a = 3;
		int b = 4;
		
		System.out.println(3 & 4);
		System.out.println(3 | 4);
		System.out.println(3 ^ 4);
		System.out.println(~3);
		System.out.println(3 << 2); //3*2^2 = 3*4 = 12;
	
		//>> 把>>左边的数据除以2的移动次幂
		System.out.println(24 >> 2); //24 / 2^2 = 24 / 4 = 6
		System.out.println(24 >>> 2);
		
		System.out.println(-24 >> 2); 
		System.out.println(-24 >>> 2);

分析:因为是位运算,所以我们必须先把数据换算成二进制

3的二进制:11
00000000 00000000 00000000 00000011
4的二进制:100
00000000 00000000 00000000 00000100

&位与运算:有0则0。

	00000000 00000000 00000000 00000011
   &00000000 00000000 00000000 00000100
	-----------------------------------
	00000000 00000000 00000000 00000000
	结果是:0

|位或运算:有1则1。

	00000000 00000000 00000000 00000011
   |00000000 00000000 00000000 00000100
	-----------------------------------
	00000000 00000000 00000000 00000111
	结果是:7

^位异或运算:相同则0,不同则1。

	00000000 00000000 00000000 00000011
   &00000000 00000000 00000000 00000100
	-----------------------------------
	00000000 00000000 00000000 00000111
	结果是:7

~按位取反运算符:0变1,1变0

	00000000 00000000 00000000 00000011
   ~11111111 11111111 11111111 11111100 (补码)
   
   补码:11111111 11111111 11111111 11111100
   反码:11111111 11111111 11111111 11111011
   原码:10000000 00000000 00000000 00000100
	结果是:-4

<<:左移 左边最高位丢弃,右边补齐0

00000000 00000000 00000000 00000011
	(00)000000 00000000 00000000 0000001100
结果是:12

>>的移动:

计算出24的二进制:11000
	原码:10000000 00000000 00000000 00011000
	反码:11111111 11111111 11111111 11100111
	补码:11111111 11111111 11111111 11101000
	
	11111111 11111111 11111111 11101000
	1111111111 11111111 11111111 111010(00) 补码
	
	补码:1111111111 11111111 11111111 111010
	反码:1111111111 11111111 11111111 111001
	原码:1000000000 00000000 00000000 000110
	
	结果:-6

>>>的移动:

	计算出24的二进制:11000
	原码:10000000 00000000 00000000 00011000
	反码:11111111 11111111 11111111 11100111
	补码:11111111 11111111 11111111 11101000
	
	11111111 11111111 11111111 11101000
	0011111111 11111111 11111111 111010(00)
	
	结果:?
### C语言基础概念 C语言是一种通用的、过程式的计算机程序设计语言,自诞生以来因其高效性和灵活性而被广泛应用于各种领域。以下是C语言的一些基础知识: #### 数据类型 C语言支持多种数据类型,包括基本数据类型和派生数据类型。常见的基本数据类型有整型(`int`)、字符型(`char`)、浮点型(`float` 和 `double`),以及枚举类型(`enum`)。通过这些数据类型,程序员能够定义变量来存储不同类型的数据[^1]。 #### 变量与常量 在C语言中,变量是用来存储数据的一个命名位置。声明一个变量之前需要指定其类型。例如: ```c int age; float height; ``` 上述代码分别声明了一个用于存储年龄的整数变量和一个用于存储身高的浮点数变量。此外,还可以使用关键字`const`来创建不可修改的常量。 ```c const float PI = 3.14159; ``` #### 运算符 C语言提供了丰富的运算符集合,涵盖了算术运算符、关系运算符、逻辑运算符等多个类别。比如加法运算符`+`可用于两个数值相加;比较大小则可以利用大于号`>`或者小于号`<`等关系运算符实现判断条件。 #### 控制结构 控制流语句决定了程序中的指令执行顺序。典型的控制结构包括条件分支(`if...else`)、循环(`for`, `while`, `do...while`)以及跳转语句如`break`和`continue`。下面是一个简单的例子展示如何运用`if`语句来进行决策处理: ```c if (score >= 60) { printf("Pass\n"); } else { printf("Fail\n"); } ``` #### 函数 函数是一组一起完成特定任务的一系列语句。标准库已经提供了一些常用的内置函数,同时也允许开发者自己编写自定义函数以提高代码重用率并增强模块化程度。函数定义通常由返回值类型、函数名及其参数列表构成。如下所示的是计算两数之积的一个简单函数实例: ```c int multiply(int a, int b){ return a * b; } ``` #### 输入输出操作 对于初学者来说掌握基本输入/输出是非常重要的环节之一。printf()负责格式化的屏幕打印工作,scanf()可以从键盘接收用户的输入信息。这里给出一段示范性的交互对话片段: ```c #include <stdio.h> int main(){ int number; printf("Enter an integer: "); scanf("%d", &number); printf("You entered %d.\n", number); return 0; } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值