重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
我们知道,在java中,int是占4个字节的,也就是32位。
10年积累的成都网站制作、做网站经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先网站策划后付款的网站建设流程,更有磐石免费网站建设让你可以放心的选择与我们合作。
这个程序,应该是为了将一个int类型转换成32位2进制数。
原理:
1. :左移运算符,在没有数字溢出的情况下,左移一位都相当于乘以2的1次方,左移n位就相当于乘以2的n次方。
2. :位运算符,当两边操作数的位同时为1时,结果为1,否则为0。如111 101 = 101。
切入正题:
1. 为了取得32位完整的二进制数,需要循环32次,131即2的31次方,表示最高位为1,其余31位均为0的二进制数;130即2的30次方,表示第二位为1,其余31位均为0的二进制数;以此类推。
2. 程序从高位开始转换int类型,我们想要截取二进制数的特定某位时,我们需要用一个此位为1,其余位均为0的二进制数来做运算,例如,我们想截取15的最高位,我们只需使用最高位为1的32位二进制数与15做运算即可。因为假设假设某位为1,1 1 = 1,假设某位为0,0 1 = 0,均能得到原来的数。而1或0与0相与均为0.
总之,程序是从高位到低位依次一位一位截取int对应二进制数,输出的结果便是int对应的二进制数
效果图
参考代码
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class MoveTextFrame extends JFrame {
JLabel jl;//文字标签
int speed=2;//移动速度
public MoveTextFrame() {
jl = new JLabel("文字动画");
jl.setForeground(Color.RED);
add(jl);
setSize(380, 100);//窗口大小
setLocationRelativeTo(null);//窗口居中
setResizable(false);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setVisible(true);
//设置定时器, 每隔25毫秒,改变一次文字标签的位置
Timer t = new Timer(25, new ActionListener() {
public void actionPerformed(ActionEvent e) {
int x = jl.getX()+speed;//计算移动后的位置
if(x=390){//如果超过就指定像素,就重新从左边开水移动
x=-30;
}
jl.setLocation(x, jl.getY());//更新位置
//repaint();
}
});
t.start();
}
public static void main(String[] args) {
new MoveTextFrame();
}
}
监听一下窗口关闭事件就可以了WindowEvent。 监听到关闭事件后代码大概如下
:假设向左移动出窗口
int locationX ;
while(locationX 0)
{
locationX -= 10;
this.setLocation(locationX, y);
this.repaint();
Thread.sleep(50);
}
哦。向下移,就是修改y坐标的。也和上面差不多。放心好了。不会不舒服,利用Thread.sleep控制移动延迟,locationY -= speed控制移动的幅度。
import java.util.Scanner;
public class ShuZu_yiwei{
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner input = new Scanner(System.in);
System.out.println("请输入原数组的数组元素,每个数组元素之间用空格隔开:");
String s = input.nextLine();
String []str = s.split(" ");//把字符串s按照空格划分,然后存储到数组str中
System.out.println("请输入要移动的数组元素个数:");
int M = input.nextInt();
String []array = new String[M];
String []barray = new String[str.length-M];
String []carray = new String[str.length];
System.arraycopy(str, 0, array, 0, M);//把原数组的前面M个复制到array中
System.arraycopy(str, M, barray, 0, barray.length);//把原数组的后str.length-M个复制到array中
System.arraycopy(barray,0,carray,0,barray.length);//把原数组的后str.length-M拷贝到目标数组中的前0到str.length-M,
System.arraycopy(array,0,carray,barray.length,array.length);//把原数组前面M个元素拷贝目标数组的后str.length-M到str.length
System.out.println("移动后的数组为:");
for(int i=0;icarray.length;i++)//打印目标数组的每一个元素
{
System.out.print(carray[i]+" ");
if((i+1)%10==0){//每行输出是个数组元素
System.out.println();
}
}
}
}
改变规制时候的X Y就行了.伪代码如下.
int x =0,y=0,;
x++; y++;
g.drawImage( "图片信息" , x, y,锚点);
大概就这样图片就动了.你想移动到哪加个判断就行了.
我要分,赶快采纳哦......
public void run() {
/* Begin section C. */
// Increment c from 1 to 100.
for (int c = 1; c = 1000; c++) {
// Pause this frame for 250 milliseconds before drawing the next
// frame.
try {
Thread.sleep(250);
} catch (InterruptedException i) {
System.exit(1);
}
// 我以下添加
carbodylocation.changeLocation(new Location(carbodylocation.getVertical() - c, carbodylocation.getHorizontal() + c));
windowLocation.changeLocation(new Location(windowLocation.getVertical() - c, windowLocation.getHorizontal() + c));
window2Location.changeLocation(new Location(window2Location.getVertical() - c, window2Location.getHorizontal() + c));
wheellocation.changeLocation(new Location(wheellocation.getVertical() - c, wheellocation.getHorizontal() + c));
tireLocation.changeLocation(new Location(tireLocation.getVertical() - c, tireLocation.getHorizontal() + c));
tire2Location.changeLocation(new Location(tire2Location.getVertical() - c, tire2Location.getHorizontal() + c));
wheel2Location.changeLocation(new Location(wheel2Location.getVertical() - c, wheel2Location.getHorizontal() + c));
// 以上我添加
// Draw the frame.
repaint();
}
/* End section C. */
}