問題一:1,25表示字符串繪制沖(1,25)開始。
創新互聯建站服務項目包括佛坪網站建設、佛坪網站制作、佛坪網頁制作以及佛坪網絡營銷策劃等。多年來,我們專注于互聯網行業,利用自身積累的技術優勢、行業經驗、深度合作伙伴關系等,向廣大中小型企業、政府機構等提供互聯網行業的解決方案,佛坪網站推廣取得了明顯的社會效益與經濟效益。目前,我們服務的客戶以成都為中心已經輻射到佛坪省份的部分城市,未來相信會繼續擴大服務區域并繼續獲得客戶的支持與信任!
問題二:這個是用來捕捉異常的,對程序來說,他知道這里有可能出現異常,為了程序能正常運行,就需要處理。它嘗試運行try里面的代碼,如果出現異常就交到catch里面處理。也就是說有異常就捕捉,沒異常就繼續運行,但是不能不設置捕捉。
問題三:方塊沿著水平方向100毫秒移動8,當移動的距離大于160的時候,又沖從新回到原來的地方(i = 1;)然后有繼續原來的運動循環
手打的,望采納,Thanks!
可以自己定義一個方法,先把右移的最低位保存起來(左移就是最高位),再用移一位,再把最低位加上去,循環n次
三個是循環右移,移除后最高位移到最低位;
兩個的話,移除會丟棄,低位補0.
效果圖
參考代碼
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();
}
}
java中的移位是這么做的
如:
int a = 8;
int b = 32;
ab 等價于 a(b%32)
也就是說
a32 等價于 a0,移32位等于沒移
a33 等價于 a1
a34 等價于 a2
不信你可以試試下面的代碼
int a = 8;
System.out.println(a33 == a1);//看看這個結果是不是true
-4的二進制表示為1111 1111 1111 1011
i3 右移3位,移出的不管,左端補1 變為1111 1111 1111 1111 這是-1的二進制表示,所以結果為-1.
i5 同理。
具體原理:
先來說一下怎么得出負數的二進制。原碼,反碼,補碼,這三個概念搞清。
1、原碼:一個正數,按照絕對值大小轉換成的二進制數;一個負數按照絕對值大小轉換成的二進制數,然后最高位補1,稱為原碼。
比如 00000000 00000000 00000000 00000101 是 5的 原碼。
10000000 00000000 00000000 00000101 是 -5的 原碼。
備注:
比如byte類型,用2^8來表示無符號整數的話,是0 - 255了;如果有符號, 最高位表示符號,0為正,1為負,那么,正常的理解就是 -127 至 +127 了.這就是原碼了,值得一提的是,原碼的弱點,有2個0,即+0和-0(10000000和00000000);還有就是,進行異號相加或同號相減時,比較笨蛋,先要判斷2個數的絕對值大小,然后進行加減操作,最后運算結果的符號還要與大的符號相同;于是,反碼產生了。
2、反碼:正數的反碼與原碼相同,負數的反碼為對該數的原碼除符號位外各位取反[每一位取反(除符號位)]。
取反操作指:原為1,得0;原為0,得1。(1變0; 0變1)
比如:正數00000000 00000000 00000000 00000101 的反碼還是 00000000 00000000 00000000 00000101
負數10000000 00000000 00000000 00000101 的反碼則是 11111111 11111111 11111111 11111010。
反碼是相互的,所以也可稱:10000000 00000000 00000000 00000101 和 11111111 11111111 11111111 11111010互為反碼。
備注:還是有+0和-0,沒過多久,反碼就成為了過濾產物,也就是,后來補碼出現了。
3、補碼:正數的補碼與原碼相同,負數的補碼為對該數的原碼除符號位外各位取反,然后在最后一位加1.
比如:10000000 00000000 00000000 00000101 的補碼是:11111111 11111111 11111111 11111010。
那么,補碼為:
11111111 11111111 11111111 11111010 + 1 = 11111111 11111111 11111111 11111011
備注:1、從補碼求原碼的方法跟原碼求補碼是一樣的 ,也可以通過完全逆運算來做,先減一,再取反。
2、補碼卻規定0沒有正負之分
所以,-5 在計算機中表達為:11111111 11111111 11111111 11111011。轉換為十六進制:0xFFFFFFFB。
搞懂二進制表示后,再來說一下左移右移運算符。
左移運算是將一個二進制位的操作數按指定移動的位數向左移位,移出位被丟棄,右邊的空位一律補0。右移運算是將一個二進制位的操作數按指定移動的位數向右移動,移出位被丟棄,左邊移出的空位或者一律補0,或者補符號位,這由不同的機器而定。在使用補碼作為機器數的機器中,正數的符號位為0,負數的符號位為1。(均由機器來定)
So,為什么得到-1知道了吧~~~
本文題目:java循環右移代碼,java數組循環左移
本文鏈接:http://m.newbst.com/article20/dssiijo.html
成都網站建設公司_創新互聯,為您提供建站公司、搜索引擎優化、App設計、、關鍵詞優化、Google
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯