求大神帮算个结果

werrwe 2013-04-18 10:58:30
我想知道5000低八位带符号右移两位的结果是多少?
...全文
287 14 打赏 收藏 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
小绵羊 2013-04-20
  • 打赏
  • 举报
回复
引用 13 楼 u010334406 的回复:
有点迷糊了,我理解11楼的结果最高位少1,12楼的结果最高位补1?假设500是16位二进制数,求正确答案。

int a = 500;
		String bs = Integer.toBinaryString(a);
		//int占32位
		while (bs.length() < 32)
			bs = "0" + bs;
		System.out.println(bs);

		byte b = (byte) a;// 一个byte占8位,强制类型转换截取低8位

		bs = Integer.toBinaryString(b);
		System.out.println(bs.substring(bs.length() - 8));

		b >>= 2;// 带符号右移2位

		bs = Integer.toBinaryString(b & 0xff);
		System.out.println(bs.substring(bs.length() - 8));

00000000000000000000000111110100
11110100
11111101
werrwe 2013-04-19
  • 打赏
  • 举报
回复
有点迷糊了,我理解11楼的结果最高位少1,12楼的结果最高位补1?假设500是16位二进制数,求正确答案。
werrwe 2013-04-18
  • 打赏
  • 举报
回复
我用转换器查的,5000二进制是这个:0001 0011 1000 1000
绝对在乎妮 2013-04-18
  • 打赏
  • 举报
回复
5000二进制:0001 0000 0000 0100 低八位是?0000 0100? 右移两位,0000 0001,貌似结果是就是00000001。就是高八位低八位不知道是不是弄反了。。。。
石馨宇 2013-04-18
  • 打赏
  • 举报
回复

public class Demo02 {
	public static void main(String[] args){
		int a = 500;
		System.out.println(Integer.toBinaryString(a));
		a = a>>>2;
		System.out.println(Integer.toBinaryString(a));
	}
}
上面的有点小瑕疵 应该是带符号的右移 500是正数,右移加零哈
石馨宇 2013-04-18
  • 打赏
  • 举报
回复

111110100
1111101
石馨宇 2013-04-18
  • 打赏
  • 举报
回复

public class Demo02 {
	public static void main(String[] args){
		int a = 500;
		System.out.println(Integer.toBinaryString(a));
		a = a>>2;
		System.out.println(Integer.toBinaryString(a));
	}
}
Rainet_yang 2013-04-18
  • 打赏
  • 举报
回复
玩高端,学习了~
小绵羊 2013-04-18
  • 打赏
  • 举报
回复
int a = 500; byte b = (byte) (a & 0xff); System.out.println(Integer.toBinaryString(b)); b >>= 2; System.out.println(Integer.toBinaryString(b));
candiceChan7 2013-04-18
  • 打赏
  • 举报
回复
你们不是在开玩笑吧。500的二进制是这样的啊:1 0011 1000 1000 带符号右移两位是:11100010
loveofmylife 2013-04-18
  • 打赏
  • 举报
回复
引用 5 楼 x6587305x 的回复:
我觉得楼上错了吧 就是应该 11100010 啊 带符号 就是带符号加啊。第一位是0就补0 是1就补1啊 不知道 有没有把知识还给老师
应该是 11100010
西门大扫雪 2013-04-18
  • 打赏
  • 举报
回复
我觉得楼上错了吧 就是应该 11100010 啊 带符号 就是带符号加啊。第一位是0就补0 是1就补1啊 不知道 有没有把知识还给老师
werrwe 2013-04-18
  • 打赏
  • 举报
回复
引用 3 楼 viszl 的回复:
java 的int是32位的 低八位是用于双字节的,java int是4个字节,你怎么区分低8位呢 如果是0001 0011 1000 1000的话 低8位是1000 1000 带符号右移两位 1010 0010 补齐前面3个字节是 0000 0000 0000 0000 0001 0011 1010 0010
感谢,再问下,低8位是1000 1000带符号右移两位,为什么不是1110 0010?我的算法是去掉后两位,符号位先后补两个1
loveofmylife 2013-04-18
  • 打赏
  • 举报
回复
java 的int是32位的 低八位是用于双字节的,java int是4个字节,你怎么区分低8位呢 如果是0001 0011 1000 1000的话 低8位是1000 1000 带符号右移两位 1010 0010 补齐前面3个字节是 0000 0000 0000 0000 0001 0011 1010 0010

62,620

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧