問題一:1,25表示字符串繪制沖(1,25)開始。
創(chuàng)新互聯(lián)建站服務(wù)項(xiàng)目包括佛坪網(wǎng)站建設(shè)、佛坪網(wǎng)站制作、佛坪網(wǎng)頁制作以及佛坪網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢(shì)、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,佛坪網(wǎng)站推廣取得了明顯的社會(huì)效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到佛坪省份的部分城市,未來相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!
問題二:這個(gè)是用來捕捉異常的,對(duì)程序來說,他知道這里有可能出現(xiàn)異常,為了程序能正常運(yùn)行,就需要處理。它嘗試運(yùn)行try里面的代碼,如果出現(xiàn)異常就交到catch里面處理。也就是說有異常就捕捉,沒異常就繼續(xù)運(yùn)行,但是不能不設(shè)置捕捉。
問題三:方塊沿著水平方向100毫秒移動(dòng)8,當(dāng)移動(dòng)的距離大于160的時(shí)候,又沖從新回到原來的地方(i = 1;)然后有繼續(xù)原來的運(yùn)動(dòng)循環(huán)
手打的,望采納,Thanks!
可以自己定義一個(gè)方法,先把右移的最低位保存起來(左移就是最高位),再用移一位,再把最低位加上去,循環(huán)n次
三個(gè)是循環(huán)右移,移除后最高位移到最低位;
兩個(gè)的話,移除會(huì)丟棄,低位補(bǔ)0.
效果圖
參考代碼
import?java.awt.*;
import?java.awt.event.*;
import?javax.swing.*;
public?class?MoveTextFrame?extends?JFrame?{
JLabel?jl;//文字標(biāo)簽
int?speed=2;//移動(dòng)速度
public?MoveTextFrame()?{
jl?=?new?JLabel("文字動(dòng)畫");
jl.setForeground(Color.RED);
add(jl);
setSize(380,?100);//窗口大小
setLocationRelativeTo(null);//窗口居中
setResizable(false);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setVisible(true);
//設(shè)置定時(shí)器,?每隔25毫秒,改變一次文字標(biāo)簽的位置
Timer?t?=?new?Timer(25,?new?ActionListener()?{
public?void?actionPerformed(ActionEvent?e)?{
int?x?=?jl.getX()+speed;//計(jì)算移動(dòng)后的位置
if(x=390){//如果超過就指定像素,就重新從左邊開水移動(dòng)
x=-30;
}
jl.setLocation(x,?jl.getY());//更新位置
//repaint();
}
});
t.start();
}
public?static?void?main(String[]?args)?{
new?MoveTextFrame();
}
}
java中的移位是這么做的
如:
int a = 8;
int b = 32;
ab 等價(jià)于 a(b%32)
也就是說
a32 等價(jià)于 a0,移32位等于沒移
a33 等價(jià)于 a1
a34 等價(jià)于 a2
不信你可以試試下面的代碼
int a = 8;
System.out.println(a33 == a1);//看看這個(gè)結(jié)果是不是true
-4的二進(jìn)制表示為1111 1111 1111 1011
i3 右移3位,移出的不管,左端補(bǔ)1 變?yōu)?111 1111 1111 1111 這是-1的二進(jìn)制表示,所以結(jié)果為-1.
i5 同理。
具體原理:
先來說一下怎么得出負(fù)數(shù)的二進(jìn)制。原碼,反碼,補(bǔ)碼,這三個(gè)概念搞清。
1、原碼:一個(gè)正數(shù),按照絕對(duì)值大小轉(zhuǎn)換成的二進(jìn)制數(shù);一個(gè)負(fù)數(shù)按照絕對(duì)值大小轉(zhuǎn)換成的二進(jìn)制數(shù),然后最高位補(bǔ)1,稱為原碼。
比如 00000000 00000000 00000000 00000101 是 5的 原碼。
10000000 00000000 00000000 00000101 是 -5的 原碼。
備注:
比如byte類型,用2^8來表示無符號(hào)整數(shù)的話,是0 - 255了;如果有符號(hào), 最高位表示符號(hào),0為正,1為負(fù),那么,正常的理解就是 -127 至 +127 了.這就是原碼了,值得一提的是,原碼的弱點(diǎn),有2個(gè)0,即+0和-0(10000000和00000000);還有就是,進(jìn)行異號(hào)相加或同號(hào)相減時(shí),比較笨蛋,先要判斷2個(gè)數(shù)的絕對(duì)值大小,然后進(jìn)行加減操作,最后運(yùn)算結(jié)果的符號(hào)還要與大的符號(hào)相同;于是,反碼產(chǎn)生了。
2、反碼:正數(shù)的反碼與原碼相同,負(fù)數(shù)的反碼為對(duì)該數(shù)的原碼除符號(hào)位外各位取反[每一位取反(除符號(hào)位)]。
取反操作指:原為1,得0;原為0,得1。(1變0; 0變1)
比如:正數(shù)00000000 00000000 00000000 00000101 的反碼還是 00000000 00000000 00000000 00000101
負(fù)數(shù)10000000 00000000 00000000 00000101 的反碼則是 11111111 11111111 11111111 11111010。
反碼是相互的,所以也可稱:10000000 00000000 00000000 00000101 和 11111111 11111111 11111111 11111010互為反碼。
備注:還是有+0和-0,沒過多久,反碼就成為了過濾產(chǎn)物,也就是,后來補(bǔ)碼出現(xiàn)了。
3、補(bǔ)碼:正數(shù)的補(bǔ)碼與原碼相同,負(fù)數(shù)的補(bǔ)碼為對(duì)該數(shù)的原碼除符號(hào)位外各位取反,然后在最后一位加1.
比如:10000000 00000000 00000000 00000101 的補(bǔ)碼是:11111111 11111111 11111111 11111010。
那么,補(bǔ)碼為:
11111111 11111111 11111111 11111010 + 1 = 11111111 11111111 11111111 11111011
備注:1、從補(bǔ)碼求原碼的方法跟原碼求補(bǔ)碼是一樣的 ,也可以通過完全逆運(yùn)算來做,先減一,再取反。
2、補(bǔ)碼卻規(guī)定0沒有正負(fù)之分
所以,-5 在計(jì)算機(jī)中表達(dá)為:11111111 11111111 11111111 11111011。轉(zhuǎn)換為十六進(jìn)制:0xFFFFFFFB。
搞懂二進(jìn)制表示后,再來說一下左移右移運(yùn)算符。
左移運(yùn)算是將一個(gè)二進(jìn)制位的操作數(shù)按指定移動(dòng)的位數(shù)向左移位,移出位被丟棄,右邊的空位一律補(bǔ)0。右移運(yùn)算是將一個(gè)二進(jìn)制位的操作數(shù)按指定移動(dòng)的位數(shù)向右移動(dòng),移出位被丟棄,左邊移出的空位或者一律補(bǔ)0,或者補(bǔ)符號(hào)位,這由不同的機(jī)器而定。在使用補(bǔ)碼作為機(jī)器數(shù)的機(jī)器中,正數(shù)的符號(hào)位為0,負(fù)數(shù)的符號(hào)位為1。(均由機(jī)器來定)
So,為什么得到-1知道了吧~~~