java 实验一

我的java作业。。。    大家忽略掉。。。给童鞋们看的。。张桂珠 呵呵


实验一 


 

题目一将一个128bits位的数 扩大两倍 

 

提示 :用神奇的位运算 

 

内容:  说位运算 咱就用位运算 妥妥的。

 

思路 : 扩大为原来的二倍。 看到了二倍,二倍 你能想到什么?想到了什么!  二倍和三倍不是一个概念,为什么? 因为计算机就是一个01的东西,他就是通过二进制来存储东西的! 所以扩大两倍 就是向左移动移位,也就是把每个数位的权扩大。

再就是 128位了 long  64位。。。不知道long  long  可不可可以。。分成两个数吧。。

记得进位!!that’s all

 

 

源代码: 

 

package a;

import java.util.*;

 

public class my {

 public static void main(String[] args) {

 Scanner scanner = new Scanner(System.in); // 读取输入

 System.out.println("请输入32位16进制数字(格式为:0101010101010101 1010101010101010(中间用空格分开)):"); 

 String s;

 s=scanner.nextLine();

 String[] str=s.split(" ");

 

 long a,b,p;

         a=Long.parseLong(str[0], 16);

         b=Long.parseLong(str[1], 16);

         System.out.println("您输入的数据为:");

         System.out.println(String.format("%016x %016x ",a,b));

         p= b&0x8000000000000000l;

         //System.out.println(p);

   //移位

        a=a<<1;

        if(p!=0) a=a|1;//处理进位

        b=b<<1;

              

        System.out.println("扩大两倍后的数据为:");

        System.out.println(String.format("%016x %016x ",a,b));

         

 }//by airuozhaoyang

}

 

 

运行结果:

 

 

 

 

小结:  java麻麻烦烦啊。。输入输出好麻烦啊 查了好多百度 又是输入流 又是输出了 封装好的东西 还要去查查API。。。蛋疼。。考虑一下计算机的感受好么。。。

 

 

 

 

 

 

 

题目二:通过位运算实现 y=a*100

 

内容:位运算实现乘法  就是把100拆开呗。

 

 

思路:把100拆成二进制 来算呗。 100= 64+32+4

哇塞 真的成功了啦。

 

源代码:

 

package a;

import java.util.*;

 

public class my2 {//用位运算实现a*100

 public static void main(String[] args) {

 Scanner scanner = new Scanner(System.in); // 读取输入

 System.out.println("请输入乘数a:"); 

 String s;

 s=scanner.nextLine();

// 100=64+32+4=6 5 2

         long a=Long.parseLong(s, 10);

         long c,d,f;

         c=a<<6;

         d=a<<5;

         f=a<<2;

   

       System.out.println(String.format("经过计算得: a*100= %d",c+d+f));

 }

//by airuozhaoyang 

}

 

 

运行结果:

 

 

 

 

 

 

小结:  这道题出的十分巧妙 其实就是从计算机的角度考虑问题 不失拙计。 巧夺天工。

 

 

心得体会: 这两道题 深深的侧重了 从计算机存储方式来考虑 计算的方法。 我想 这正是 张老师的良苦用心所在。 为我打开了一个心得思考领域,学会用另一种眼光看待 计算。

两题 彰显了老师经验丰富,水平超群。学生收货颇丰。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值