java代码整体右移动 java中左移右移

Java中右移运算将一个数的各二进制位全部右移若干位,正数左补0,负数左补1 , 右边丢弃 。
操作数每右移一位,相当于该数除以2 。
注:正数的原码,反码,补码一致;负数的反码是除去符号位外其余取反 , 负数补码是除去符号位外其余取反,末尾加1 。(二进制最左边一位是符号位)
带符号右移运算符()
将一个数的各二进制位全部右移若干位,正数左补0,负数左补1,右边丢弃 。
无符号右移运算符()
运算符把 expression1 的各个位向右移 expression2 指定的位数 。右移后左边空出的位用零来填充 。移出右边的位被丢弃
-12 = -1
-1:原码:1000 0001反码:1111 1110补码:1111 1111
右移2位:1111 1111( 用补码操作,并用 1补齐左边位)
再找反码:1000 0000( 除去左边符号位,其余取反 )
【java代码整体右移动 java中左移右移】再找原码:1000 0001 = -1( 还是将反码末尾加1 )
-52=-2
-5:原码:1000 0101反码:1111 1010补码:1111 1011
右移2位:1111 1110( 用补码操作,并用 1补齐左边位)
再找反码:1000 0001( 除去左边符号位,其余取反 )
再找原码:1000 0010 = -2( 还是将反码末尾加1 )
-52=1073741822
-5:
原码:1111 1111 1111 1111 1111 1111 1111 0101
反码:1111 1111 1111 1111 1111 1111 1111 1010
补码:1111 1111 1111 1111 1111 1111 1111 1011
右移2位:0011 1111 1111 1111 1111 1111 1111 1110=1073741822
java 右移java中貌似一般都用byte存二进制java代码整体右移动,八进制和十六进制倒是能在数字前加0和0x表示,二进制没有 。
定义一个int型变量,系统默认为十进制java代码整体右移动的 。
java代码整体右移动你现在想把一个数右移,具体的处理方法要根据你的这个“数”是个什么类型的 。
如果是字符串,可以用以下方法处理:
String s = "101";
int i = Integer.parseInt(s, 2);
这样得到的i就是5,再右移的话就没问题java代码整体右移动了 。
如果是数字,可以根据具体的进制进行相关转换操作,如果转成byte[]不方便可以转成八进制或十六进制 。主要看你要右移的是个什么类型的java代码整体右移动了 。
具体的可以给我留言~:)
Java编程实现一个能循环地自左向右移动的动画程序 。效果图
参考代码
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右移左移问题,不知道结果为什么是这样楼主你好!问题是这样的:
先拿第一句来说
语句:System.out.println("000011112:" + (000011112));
中的00001111是八进制的数,能0开头的数是八进制数,而00001111用二进制表示为1001001001,数值前有22个0,一共有32位,左移2位后变为10010010,数值前有24个0 , 而10010010用十进制表示则为146 。所以语句:System.out.println("000011112:" + (000011112));输出000011112:146 。其他以0开头的数类推 。但第二和第四个System.out.println()语句中的11000011是十进制的数,不能看作是二进制的也不能看作是八进制的数 。楼主要看清 。

推荐阅读