中易网

Java中,位运算符>>,右移时左边何时补0,何时补1

答案:2  悬赏:60  
解决时间 2021-01-29 06:06
Java中,位运算符>>,右移时左边何时补0,何时补1
最佳答案
右移动运算符:
把操作数向右移动,移动的位个数同样由右操作数指定。注意:面对带正负号的数,会采用符号扩展,如果原值是正数,则高位补上0;如果原值是负数,高位补1。
全部回答
在Thinking in Java第三章中的一段话:

移位运算符面向的运算对象也是二进制的“位”。可单独用它们处理整数类型(主类型的一种)。左移位运算符(<<)能将运算符左边的运算对象向左移动运算符右侧指定的位数(在低位补0)。“有符号”右移位运算符(>>)则将运算符左边的运算对象向右移动运算符右侧指定的位数。“有符号”右移位运算符使用了“符号扩展”:若值为正,则在高位插入0;若值为负,则在高位插入1。Java也添加了一种“无符号”右移位运算符(>>>),它使用了“零扩展”:无论正负,都在高位插入0。这一运算符是C或C++没有的。
若对char,byte或者short进行移位处理,那么在移位进行之前,它们会自动转换成一个int。只有右侧的5个低位才会用到。这样可防止我们在一个int数里移动不切实际的位数。若对一个long值进行处理,最后得到的结果也是long。此时只会用到右侧的6个低位,防止移动超过long值里现成的位数。但在进行“无符号”右移位时,也可能遇到一个问题。若对byte或short值进行右移位运算,得到的可能不是正确的结果(Java 1.0和Java 1.1特别突出)。它们会自动转换成int类型,并进行右移位。但“零扩展”不会发生,所以在那些情况下会得到-1的结果。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
带分频器的音箱写着50w-150w是什么意思
QQ炫舞印象怎么弄成紫色的字啊?
现在高三还考200多咋办
怎样把白色相框从白色背景中抠出来
幻影娱乐180090009是什么
模仿张晓风的春之怀古,写一篇叫《春之畅想》
秋冬蔬菜可以种植的有哪些豌豆种子
排球运动开展得最晚水平最低的是
一篇关于古琴的散文诗
三只猴子吃篮子里的桃子第一只猴子直接那1
拉力计测力计用英语怎么说
金海旅馆(唐山遵化市)地址有知道的么?有点事
阿尔斯通创为实 技术支持 这个岗位发展前景、
漠河天竹旅店地址在什么地方,想过去办事
"太阳路"指的是什么,你能说说它的含义吗?
推荐资讯
以长片小说简爱著称于世的英国女作家夏洛蒂
c语言中%id什么意思
跪求大神帮忙p个图
作文《这个故事,我要讲给他/她听》300字
三阳野狼摩托车什么坏了,会造成全车断电不能
山东保镖安全顾问多少钱?
影响压缩机不工作的传感器有哪些
做好的同义词是什么?
求问雷丁、御捷、欧派这几个电动四轮车品牌哪
什么花晚上开花早上就枯萎了
□里加√的符号
求何处暖阳不倾城的百度云盘
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?