-128(byte)>>128 等于多少?(java题目)

[复制链接]
查看11 | 回复3 | 2009-5-5 12:56:31 | 显示全部楼层 |阅读模式
public class ex54{

public static void main(String[] args){

byte a=-128;

byte b=(byte)(a>>128);

System.out.print(b);

}
}
求b多少,为什么
要求有过程,最好用二进制表示
答得满意的加20分
我要的是a>>128的原理和过程,如果你的答案是-8那你就错了,不信你可以用C做一下
,之于a>>128的二进制过程,只不过128个1或0而已 ^_^!

回复

使用道具 举报

千问 | 2009-5-5 12:56:31 | 显示全部楼层
>>是有符号右移位运算符,则将运算符左边的运算对象向右移动运算符右侧指定的位数,若值为正则在高位插入0,若值为负则在高位插入1。 值得注意的是:对于int型的移动位数,需要先模32再移。所以x>>128 = x>>0,也即并没有开始运算。 还是举个其他的例子说明吧,比如-128>>36 = -128>>4 -128: 1,0000000 右移4位: 1, 000(0000) 高位插1: 1,1111000(结果是补码) 反码: 1,1110111 原码: 1,0001000 结果为: -8呵呵,有点白~不好意思。...
回复

使用道具 举报

千问 | 2009-5-5 12:56:31 | 显示全部楼层
我跑了一下,正确答案应该是-128是嘛?我觉得思路是这样子的哦,不晓得对不:1. byte的是8位的,而128是能除尽8的(128/8=16)2. 所以a右移128就相当于不动(这是根据模的原理吧)3. 所以a>>128还是等于-128二进制的话,我想是这么算的。a右移128位,就相当于右移16次的8位,而-128右移8位的结...
回复

使用道具 举报

千问 | 2009-5-5 12:56:31 | 显示全部楼层
同意楼上- -。。你的答案是128.。。我是学C#的可能不太一样。。。你的答案不知道对不。。。我懒点用INT转的。。。原理呢。。-128: 1,0000000 右移4位: 1, 000(0000) 高位插1: 1,1111000(结果是补码) 反码: 1,1110111 原码: 1,0001000 结果为: -8 你要想好。。你要...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行