Java位运算学习

模仿课本上敲的,不过还是很有收获,说明太弱了。。。。

import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;


public class LogicALU extends JFrame{
	private final int SIZE=3;
	private int value1,value2;
	private JLabel words[],hints[];
	private JButton buttons[];
	private JTextField numbers[],results[];
	private JPanel northPanel,southPanel;
	
	//constructor
	LogicALU(){
		super("a program for testing logic arithmetica");
		
		//get the container
		Container container=getContentPane();
		
		//create new panel
		northPanel=new JPanel();
		northPanel.setLayout(new GridLayout(4,3));
		southPanel=new JPanel();
		southPanel.setLayout(new GridLayout(1,4));
		
		words=new JLabel[3];
		hints=new JLabel[3];
		numbers=new JTextField[3];
		results=new JTextField[3];
		
		//create the labels
		for(int i=0;i<words.length;i++)
			words[i]=new JLabel();
		//set text on label
		words[0].setText("enter two integers");
		words[1].setText("");
		words[2].setText("bit representations");
		
		//add labels into panel
		for(int i=0;i<words.length;i++)
			northPanel.add(words[i]);
		
		//create new components and set properties
		for(int i=0;i<hints.length;i++)
			hints[i]=new JLabel();
		hints[0].setText("value1");
		hints[1].setText("value2");
		hints[2].setText("result");
		
		for(int i=0;i<numbers.length;i++)
			numbers[i]=new JTextField(8);		
		numbers[2].setEditable(false);
		
		for(int i=0;i<results.length;i++){
			results[i]=new JTextField(40);
			results[i].setEditable(false);
		}
		
		//add components into panel
		for(int i=0;i<SIZE;i++){
			northPanel.add(hints[i]);
			northPanel.add(numbers[i]);
			northPanel.add(results[i]);
		}
		
		buttons=new JButton[4];
		//create new buttons
		for(int i=0;i<buttons.length;i++)
			buttons[i]=new JButton();
		buttons[0].setText("AND");
		//add action listener
		buttons[0].addActionListener(
				new ActionListener(){

					@Override
					public void actionPerformed(ActionEvent e) {
						// TODO Auto-generated method stub
						value1=Integer.parseInt(numbers[0].getText().toString());
						value2=Integer.parseInt(numbers[1].getText().toString());
						results[0].setText(getBits(value1));
						results[1].setText(getBits(value2));
						results[2].setText(getBits(value1&value2));
						numbers[2].setText(String.valueOf(value1&value2));
						//results[0].setText(String.valueOf(value1));
						//results[1].setText(String.valueOf(value2));
						//results[2].setText(String.valueOf(value1&value2));
					}
					
				});
		buttons[1].setText("OR");
		buttons[1].addActionListener(
				new ActionListener(){

					@Override
					public void actionPerformed(ActionEvent e) {
						// TODO Auto-generated method stub
						value1=Integer.parseInt(numbers[0].getText().toString());
						value2=Integer.parseInt(numbers[1].getText().toString());
						results[0].setText(getBits(value1));
						results[1].setText(getBits(value2));
						results[2].setText(getBits(value1|value2));
						numbers[2].setText(String.valueOf(value1|value2));
					}
					
				});
		buttons[2].setText("XOR");
		//add action listener
		buttons[2].addActionListener(
				new ActionListener(){

					@Override
					public void actionPerformed(ActionEvent e) {
						// TODO Auto-generated method stub
						value1=Integer.parseInt(numbers[0].getText().toString());
						value2=Integer.parseInt(numbers[1].getText().toString());
						results[0].setText(getBits(value1));
						results[1].setText(getBits(value2));
						results[2].setText(getBits(value1^value2));
						numbers[2].setText(String.valueOf(value1^value2));
					}
					
				});
		buttons[3].setText("COMPLEMENT");
		buttons[3].addActionListener(
				new ActionListener(){

					@Override
					public void actionPerformed(ActionEvent e) {
						// TODO Auto-generated method stub
						value1=Integer.parseInt(numbers[0].getText().toString());
						value2=Integer.parseInt(numbers[1].getText().toString());
						results[0].setText(getBits(~value1));
						results[1].setText(getBits(~value2));
						results[2].setText("");
					}
					
				});
		
		//add button into panel
		for(int i=0;i<buttons.length;i++)
			southPanel.add(buttons[i]);
		
		//add panels into container
		container.add(northPanel,BorderLayout.NORTH);
		container.add(southPanel,BorderLayout.SOUTH);
		
		setSize(1000,200);
		setVisible(true);
		
	}
	
	//get String of value
	private String getBits(int value){
		
		StringBuffer buffer;
		buffer=new StringBuffer();
		
		int tmp=1<<31;
		for(int i=0;i<32;i++){
			if((tmp&value)==0)
				buffer.append('0');
			else buffer.append('1');
			value<<=1;
		}
		
		return buffer.toString();
	}

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		LogicALU logicALU=new LogicALU();
		logicALU.setDefaultCloseOperation(EXIT_ON_CLOSE);
	}

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值