黑马程序员—位运算符练习 位移的应用 十进制转十六进制 及三元运算符

------- android培训java培训、期待与您交流! ---------- 
class e//练习题 (两部分)
{
 public static void main(String[] args) 
 {
/*  一:
  如何最快的计算出2*8的结果 思路利用位运算 计算机的底层是
  二进制运算 所以可以利用左移的方法 这就是位运算高效的原因
*/

System.out.println(2<<3);//即2乘以2的3次幂 结果为16

/*  二:   如何对两个整数变量的值进行互换 */

int m=2,n=3;   

/*  法一:     借助第三方变量

int  temp=n;      n=m;     m=temp; System.out.println("m="+m+",n="+n); //结果为m=3,n=2 */   

/*  法二:           开发中一般情况使用这种方法,比第三种更      直观,更容易想到,但是这种方法有个缺点,就是      int的范围问题,两个变量的和如果超过2的31次      方,则容易损失精度

n=m+n; m=n-m;//要想m=3 则需要m和n的和减去原来的m n=n-m;//要想n=2 则需要m和n的和减去上式中的m 因为m已经是3了

System.out.println("m="+m+",n="+n);//结果为m=3,n=2 */

/*  法三:           借助异或 ^ (这个方法不容易想到) */

n=n ^ m; m=n ^ m;//相当于m=n ^ m ^ m  此时m已经等于int中的n值了 即m=3 n=n ^ m; /*        此时等式后面的n仍是n=n^m中的左数第一个n,但是m已经变为        上式中的m了 即m=n^m^m,所以最后n的结果为n=(n^m) ^ (n^m^m)        相当于从右往左看m^(m^n)^(m^n)所以最后还是m值 即 m=2 */ System.out.println("m="+m+",n="+n);//结果为m=3,n=2  } }

class weiyi //练习2 位移的应用 十进制转十六进制 及三元运算符
{
 public static void main(String[] args) 
 {

  //System.out.println(Integer.toBinaryString(60));   //System.out.println(Integer.toHexString(60));    /*   二:如何获得60的十六进制位的表现形式 ?   思路:先获取60的二进制形式的最低4位,通过&15(即二进制位 1111 ) */    int num = 60; int n1 = num & 15; //System.out.println((char)(n1-10+'A'));

/*   结果为c 即答案的倒数第一位(后期有更简单的方法) n1-10是为了看出最后一位   比10多几位,因为16进制满9就进了 没有10,所以利用ASCII码表的字符具有数字   代表的功能得出最低位应该是什么 如下:

  0-9 'A' 'B' 'C' 'D' 'E' 'F'    65   66  67    10   11  12  13  14  15

   12 - 10 = 2 + 'A' = (char)67; */       

//接着 要获取下一组四位,则将60右移4位。

int temp = 60>>> 4;

/*   为什么要用无符号右移 因为如果出现负数的情况 则右移后高位会被1补齐 则变   成死循环了 所以要用无符号右移 */

//接着 对temp的值进行最低四位的获取。

int n2 = temp & 15; //System.out.println(n2);//结果为3 即答案的倒数第二位  最终答案为60=3c

/*   上述的 int n1 = num & 15;   System.out.println((char)(n1-10+'A')); 中我们实际并不知道n1与9的大小关   系 所以应该是这样写 利用马上要学的三元运算符 示例如下: */

int x=3,y; y=(x>1)?100:200; System.out.println("y="+y);

//同理 我们可以完善上面的做法

System.out.println(n1>9?(char)(n1-10+'A'):n1);

/*   注意 ? : 与后期的语句相像 因为是运算符 所以一定有结果 而且如果100换成   字符型比如说'a' 因为'a'会与200进行运算 所以会自动进行提升 就出现67而不   是c的情况了 结果是67了.吼吼...老师说以后自己写一个代码对一个整数进行16   进制形式获取的时候,再会讲到 */

System.out.println(n2>9?(char)(n1-10+'A'):n2);

/*   想要知道一个整数的二进制表现形式的时候,也可用上述方法   二进制就是& 1    再右移1位   八进制就是& 7    再右移3位      十六进制就是&15  再右移4位 */  } }



 

 

本项目是一个基于SSM(Spring+SpringMVC+MyBatis)框架和Vue.js前端技术的大学生第二课堂系统,旨在为大学生提供一个便捷、高效的学习和实践平台。项目包含了完整的数据库设计、后端Java代码实现以及前端Vue.js页面展示,适合计算机相关专业的毕设学生和需要进行项目实战练习的Java学习者。 在功能方面,系统主要实现了以下几个模块:用户管理、课程管理、活动管理、成绩管理和通知公告。用户管理模块支持学生和教师的注册、登录及权限管理;课程管理模块允许教师上传课程资料、设置课程时间,并由学生进行选课;活动管理模块提供了活动发布、报名和签到功能,鼓励学生参与课外实践活动;成绩管理模块则用于记录和查询学生的课程成绩和活动参与情况;通知公告模块则实时发布学校或班级的最新通知和公告。 技术实现上,后端采用SSM框架进行开发,Spring负责业务逻辑层,SpringMVC处理Web请求,MyBatis进行数据库操作,确保了系统的稳定性和扩展性。前端则使用Vue.js框架,结合Axios进行数据请求,实现了前后端分离,提升了用户体验和开发效率。 该项目不仅提供了完整的源代码和相关文档,还包括了详细的数据库设计文档和项目部署指南,为学习和实践提供了便利。对于基础较好的学习者,可以根据自己的需求在此基础上进行功能扩展和优化,进一步提升自己的技术水平和项目实战能力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值