在java中, 一个数左移n位,就是将这个数乘以2的n次方,右移就是将这个数除以2的n次方怎么理解?

谁能给我讲解一下,帮我弄明白了,小弟谢谢大家了!!... 谁能给我讲解一下,帮我弄明白了,小弟谢谢大家了!! 展开
 我来答
百度网友9308069
2011-07-30 · TA获得超过1万个赞
知道大有可为答主
回答量:3947
采纳率:89%
帮助的人:2302万
展开全部
一个数左移n位,就是将这个数乘以2的n次方,右移就是将这个数除以2的n次方怎么理解?
=============
这么理解
一个10进制数左移n位,就是将这个数乘以10的n次方,右移就是将这个数除以10的n次方
比如1,左移2位,得100(十进制),
一个 2进制数左移n位,就是将这个数乘以 2的n次方,右移就是将这个数除以 2的n次方
比如1,左移2位,得100(二进制),换十进制等于4
位运算是以2进制操作。
a2159049
2011-07-30 · TA获得超过267个赞
知道答主
回答量:64
采纳率:0%
帮助的人:75.4万
展开全部
要把这个数二进制化就能理解了。如十进制的2,二进制表示是0010。2左移3位,就是在二进制的低位补3个0,然后变成00010000,转成十进制就是16,即2*2^3。右移也是一样的理解就好了。
追问
右移的话,最高位是1的话空位是补1的,最高位是0的话空位补0,这个好像不符合那个右移的规律啊!
追答
右移的话要分带符号位和不带符号位两种。
计算机中的数都是二进制表示的,以8位的byte类型表示为例,5可以表示为:00000101(最高位表示符号,0位正,1为负)
无论>>还是>>>都是针对二进制数进行操作的。
1、右移运算符>>使指定值的所有位都右移规定的次数。右边移出去的部分扔掉不要,左边空出来的部分用原来的数字填充(这就是所谓的带符号右移)
——比如说5,右移后为00000010。
——你给的例子,假设x=-12,表示为32位int型就是
11111111111111111111111111110100
x>>3即带符号右移3位,结果是
11111111111111111111111111111101,化为十进制等于-3
2、>>>与>>唯一的不同是它无论原来的最左边是什么数,统统都用0填充。
——比如你的例子,byte是8位的,-1表示为byte型是11111111(补码表示法)
b>>>4就是无符号右移4位,即00001111,这样结果就是15。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
转眯爱j
2011-07-30 · TA获得超过283个赞
知道小有建树答主
回答量:178
采纳率:0%
帮助的人:91.2万
展开全部
我们生活中用的就是十进制:一位最多有九个数字(最大的就是9)超过了就要进位(10就是超过9进位得到的)
再想想我们平时在一个数的后面加n个0减n个0的是不是相应的乘了或者除了n个10?相应的是不是乘了或者除了10的n次方?现在换成二进制了而已。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式