/*【位运算符】
运算符: 运算 范例 说明 <<: 左移 3<<2=12--->3*2*2=12
>>: 右移 3>>2=1---->3/2=1
>>>: 无符号右移 3>>>2=1--->3/2=1
&: 与运算 6 & 3=2
|: 或运算 6 | 3=7
^: 异或运算 6^3=5
~: 反码 ~6=-7 */
//左移:左移就是乘以2的次幂运算。移几位就是几次幂。
//左移的用处:比如要在计算机中做3*4的运算,
//在计算机中是用二进制相乘的011*100,但是
//现在可以用位运算的方式(左移来运算),
//即把3左移2位就得到结果了,这样的运算速度很快,
//其弊端是只能操作2的倍数,在开发过程中如果要操作2
//的倍数或者2的次幂时,可用位运算来实现。 //右移:右移就是除以2的次幂运算。移几位就是几次幂。
/*
右移时,原最高位是什么,空位就补什么(保持原来的符号性)。
*/ //无符号右移:不用于做除法运算。
/*
无论原最高位是什么,空位都补0.
用处在于:获取二进制中某一段的值 比如:
一个二进制为:00000000 00111100 00000000 00110110
如果三位三位的获取其值(一次右移无符号三位),第一次
右移三位取得的是(110:结果为6),然后去掉这三位,则
下一个三位变成了最低的三位,再获取这个三位……最后得到的
结果是这个二进制对应的八进制数。(获取四位,就是二进制
对应的十六进制) 总结就是:在进行关于2的运算时,考虑左移和右移运算。
在进行二进制的位操作是,要用到无符号右移。
*/ //&运算:
/*
在二进制中在&运算过程中,只有全为1时,结果才为1,
否则为0. 用处是:在获取某一个二进制的某几位的时候比如:
一个二进制为00101011,要获取最后三位是可以用三个1和
最后三个二进制为相与
一句话:用来获取二进制中的有效位1
00101011
00000111
-----------
00000011------最后三位为二进制位
当要获取第二个三位时,可以先把此二进制无符号右移三位
在和00000111相与即可
*/ //|:运算
/*
6|3=
110
|001
----
111 --->7(十进制)
*/ //^:运算
/*
6^3=5
110
^011
----
101 --->5
^011
----
110 --->6
即6^3^3 = 6;
一个数异或另一个数,结果还是原数。(用于加密方面)
*/ //~:取反运算:
/*
~6=-7:计算如下:
6--->00000110 取反得:--->11111001
因为在计算机中是用补码形式存放的。所以要把11111001
看成一段补码,现在把这个补码转换为原码(先变为反码:
减1就行得--->11111000,再变为原码,最高位是符号位,不变
其他为按位取反得--->10000111再转化为十进制为-7)
比如6取反再加1得-6
*/ //位运算符的练习: /*
1,如何最有效率的计算2*8
通过左移来运算:2<<<3--->2*8 = 16;
//System.out.println(2<<3);--->结果是16
2, 对两个整数变量的值进行互换(不需要第三方变量)
int a = 3,b = 7; //通过第三方变量的方法如下:
int temp;
temp = a;
a = b;
b = temp; //(不经过第三方变量)通过和的形式。有个弊端,两个数据较大,可能会超出int范围。
//这个方法不太好
a = a+b; //a = 3+7;
b = a-b; //b = 3+7-7; b = 3;
a = a=b; //a = 3+7-3; a = 7; //(不经过第三方变量)通过位运算来解决。
a = a^b; //a = 3^7;
b = a^b; //b = 3^7^7; --->b = 3;
a = a^b; //a = 3^7^3; --->a = 7;
*/ //三元运算符:格式:(条件表达式)?表达式1:表达式2;
//int x = 2,y;
//y = x>1?100:200; //需求:有三个数,想知道最大的是哪个?
/*
int a = 2,b=3,c =4,max;
if(a>b)
max = a;
if(max<b)
max = b;
System.out.println("max="+max);
*/ class OperateDemo1
{
public static void main(String[] args)
{
int a=3,b=40,c=5;
int max;
if(a>b)
max = a;
else
max = b;
if(max<c)
max = c;
else
max = b;
System.out.println("max="+max); }
}

《JAVA---day03---运算符》的更多相关文章

  1. 简单物联网:外网访问内网路由器下树莓派Flask服务器

    最近做一个小东西,大概过程就是想在教室,宿舍控制实验室的一些设备. 已经在树莓上搭了一个轻量的flask服务器,在实验室的路由器下,任何设备都是可以访问的:但是有一些限制条件,比如我想在宿舍控制我种花 ...

  2. 利用ssh反向代理以及autossh实现从外网连接内网服务器

    前言 最近遇到这样一个问题,我在实验室架设了一台服务器,给师弟或者小伙伴练习Linux用,然后平时在实验室这边直接连接是没有问题的,都是内网嘛.但是回到宿舍问题出来了,使用校园网的童鞋还是能连接上,使 ...

  3. 外网访问内网Docker容器

    外网访问内网Docker容器 本地安装了Docker容器,只能在局域网内访问,怎样从外网也能访问本地Docker容器? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Docker容器 ...

  4. 外网访问内网SpringBoot

    外网访问内网SpringBoot 本地安装了SpringBoot,只能在局域网内访问,怎样从外网也能访问本地SpringBoot? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装Java 1 ...

  5. 外网访问内网Elasticsearch WEB

    外网访问内网Elasticsearch WEB 本地安装了Elasticsearch,只能在局域网内访问其WEB,怎样从外网也能访问本地Elasticsearch? 本文将介绍具体的实现步骤. 1. ...

  6. 怎样从外网访问内网Rails

    外网访问内网Rails 本地安装了Rails,只能在局域网内访问,怎样从外网也能访问本地Rails? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Rails 默认安装的Rails端口 ...

  7. 怎样从外网访问内网Memcached数据库

    外网访问内网Memcached数据库 本地安装了Memcached数据库,只能在局域网内访问,怎样从外网也能访问本地Memcached数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装 ...

  8. 怎样从外网访问内网CouchDB数据库

    外网访问内网CouchDB数据库 本地安装了CouchDB数据库,只能在局域网内访问,怎样从外网也能访问本地CouchDB数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Cou ...

  9. 怎样从外网访问内网DB2数据库

    外网访问内网DB2数据库 本地安装了DB2数据库,只能在局域网内访问,怎样从外网也能访问本地DB2数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动DB2数据库 默认安装的DB2 ...

  10. 怎样从外网访问内网OpenLDAP数据库

    外网访问内网OpenLDAP数据库 本地安装了OpenLDAP数据库,只能在局域网内访问,怎样从外网也能访问本地OpenLDAP数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动 ...

随机推荐

  1. dubbo 配置属性

    1,服务方 <dubbo:application name="demo-provider" /> <!-- 使用zookeeper注册中心暴露服务地址 --> ...

  2. DBMS 数据库管理系统 DataBase Management System

  3. [ios]如何在ARC代码中混编非ARC代码

    参考 :http://blog.sina.com.cn/s/blog_b595ce9e0101nvvn.html “ios中如果arc和非arc文件混编,可以在build parses中指定compi ...

  4. /etc/fstab 文件解析

    首先介绍一下fstab :这个文件描述系统中各种文件系统的信息.一般而言,应用程序仅读取这个文件,而不对它进行写操作.对它的维护是系统管理员的工作.在这个文件中,每个文件系统用一行来描述,在每一行中, ...

  5. .net开发中,C# DateTime.Now 取出的时间含有星期解决办法

    1.开始→运行→输入regedit,打开注册表编辑器,找到HKEY_USERS. 2.ctrl+f 查找sShortDate(多查询几次,将所有的都查出来). 3.在右边的窗口中找到sDate项,将其 ...

  6. 谈谈Java反射机制

    原文出处: locality 写在前面:什么是java反射机制?我们又为什么要学它?当程序运行时,允许改变程序结构或变量类型,这种语言称为动态语言.我们认为java并不是动态语言,但是它却有一个非常突 ...

  7. Java EE、Java SE和Java ME

    Java SE=Java Standard EditionJava EE=Java Enterprise EditionJava ME=Java Mobile Edition SE主要用于桌面程序,控 ...

  8. PHP函数笔记

    一.函数(Function) 1.什么是函数:封装的,可以重复使用的                       完成特定功能的代码段. 2.分类  (1)系统函数  (2)自定义函数 3.自定义函数 ...

  9. hdu6405Make ZYB Happy 广义sam

    题意:给出n(n<=10000)个字符串S[1~n],每个S[i]有权值val[i],随机等概率造一个由小写字母构成的字符串T,Sum = 所有含有子串T的S[i]的val[i]之积,求Sum的 ...

  10. python-day45--mysql索引

    一 .介绍 为何要有索引? 一些复杂的查询操作,对查询语句的优化显然是重中之重.说起加速查询,就不得不提到索引了. 什么是索引? 索引在MySQL中也叫做“键”,是存储引擎用于快速找到记录的一种数据结 ...