Java教程

操作符详解

本文主要是介绍操作符详解,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

1.算术操作符

   +   -   %   /

除了 % 操作符之外,其他的几个操作符可以作用于整数和浮点数。 % 和 / 的用法更多: 1.对于 / 操作符如果两个操作数都为整数,执行整数除法。而只要有浮点数执行的就是浮点数除法。 2.% 操作符的两个操作数必须为整数。返回的是整除之后的余数。

2.移位操作符

移位操作符操作的是整数,整数在内存中存储的是补码,打印或者使用时,用的原码值

<<   >>   二进制位的移动

一.左移操作符   <<

#include <stdio.h>
int main()
{
	int a = 5;
	a = a << 2;
	//     00000000000000000000000000000101原码 5
	//     00000000000000000000000000000101反码
	//     00000000000000000000000000000101补码
	//  00|00000000000000000000000000010100     20
	//     二进制位往左移两位
	printf("%d", a);
	return 0;
}

 左移的规则:左边的抛弃、右边空缺的补0

二.右移操作符    >>

#include <stdio.h>
int main()
{
	int i = -5;
	i = i >> 2;
	//   10000000000000000000000000000101 原码    -5
	//   11111111111111111111111111111010 反码
	//   11111111111111111111111111111011 补码
	//   二进制位往右移两位
	//   11111111111111111111111111111110|11   补码
	//   11111111111111111111111111111101 反码
	//   10000000000000000000000000000010 原码    -2
	printf("%d", i);
	return 0;
}

右移的规则:

1. 逻辑移位左边用0填充,右边丢弃 

2. 算术移位左边用原该值的符号位填充,右边丢弃(现在的编译器一般为第二种移位规则

*******对于移位计算符,需要注意的是:

不要移动负数位,这个是标准未定义的


3.位操作符

&    按位与                        |       按位或                        ^     按位异

它们的操作数必须为整数

用一道练习来加深理解:

不能创建临时变量(第三个变量),实现两个数的交换

#include <stdio.h>
int main()
{
	int a = 5;
	int b = 3;
	printf("打印前:a=%d,b=%d\n", a, b);
	a = a ^ b;
	b = a ^ b;//此时的a = a^b,所以 b = a^b = a^b^b 。此处b^b=0 , b = a^(b^b)= a^0 = a
	a = a ^ b;//由上可知b = a , a = a^b ,所以a = a^b^b 。此处a^a=0 , a = (a^a)^b = b
	printf("交换后: a=%d,b=%d\n", a, b);
	return 0;
}


4.单目操作符

!                逻辑反操作 -                负值 +               正值 &               取地址 sizeof        操作数的类型长度(以字节为单位) ~                对一个数的二进制按位取反 --                前置、后置 -- ++              前置、后置 ++ *                 间接访问操作符 ( 解引用操作符 ) (  类型 )        强制类型转换
这篇关于操作符详解的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!