社区
Java SE
帖子详情
位移运算?
赵Andy
2010-11-13 10:03:07
下面这段代码:
byte a=5;
byte b=a<<2;
为什么不行?
为什么
int b=a<<2;
就可以,哪位大侠解释一下。
...全文
196
6
打赏
收藏
位移运算?
下面这段代码: byte a=5; byte b=a<<2; 为什么不行? 为什么 int b=a<<2; 就可以,哪位大侠解释一下。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
kebin0001
2010-11-13
打赏
举报
回复
這裡有說明。
Java Language Specification
概要的說
位元運算時,long 保持 long的type, float double無法做位元運算,其他都轉為 int 運算。
但還是有些怪異,所以推論還有以下行為。
雖然位移是轉 int, 可是 byte b = 5 << 2; 又不會有錯,因此雖然是轉 int ,
但可以明確轉型的時候,還是會自己轉型。所以 byte 給 0~127 的 int 也不會有問題。
而 byte b = a<<5; 應該是轉成 int, 又因為 a 是變數,所以不會自動帶 5 去判斷。
因此造成型別錯誤。
凉岑玉
2010-11-13
打赏
举报
回复
[Quote=引用 1 楼 houjin_cn 的回复:]
这样可以:
Java code
byte a=5;
byte b=(byte)(a<<2);
a<<2的结果是int类型, 转到int类型需要类型强转
[/Quote]
同意··
弹指三挥间
2010-11-13
打赏
举报
回复
类型转化的问题!byte short char 在运算时都会 变int float和double都会变double
茫茫大海
2010-11-13
打赏
举报
回复
在java中,byte,char,short在运算时会自动转化为int。所以有两种办法,一个就是你下面的那种写法,二就是在运算的过程中强制类型转换!写成byte b=(byte)(a<<2);
houjin_cn
2010-11-13
打赏
举报
回复
这样可以:
byte a=5;
byte b=(byte)(a<<2);
a<<2的结果是int类型, 转到int类型需要类型强转
taoyongming
2010-11-13
打赏
举报
回复
[Quote=引用 2 楼 hudie1234567 的回复:]
在java中,byte,char,short在运算时会自动转化为int。所以有两种办法,一个就是你下面的那种写法,二就是在运算的过程中强制类型转换!写成byte b=(byte)(a<<2);
[/Quote]
楼上都回答了
java
位移
运算
的用处_Java中的
位移
运算
在Java中,
位移
运算
属于基本
运算
,符号是<>,即向左
位移
和向右
位移
。在Java中只有整数才能
位移
,所以其他的不考虑,
位移
运算
是将整数在内存中表示的二进制进行
位移
,所以在Java中分为正数和负数的
位移
。对于正数来说,向左
位移
,即<>相当于除以2,注意是整数除以整数。例如 5 >> 1 即5/2=2。下面举例说明:5<<1,我们以int为例:数字5in...
C#
位移
运算
左移<<
运算
符 将 x 向左
位移
若干个位,放弃 x 中经移位后会超出结果类型范围的那些高序位,将其余的位向左
位移
,将空出来的低序位均设置为零。 右移>>
运算
符 将 x 向右
位移
若干个位 当 x 为 int 或 long 类型时,放弃 x 的低序位,将剩余的位向右
位移
,如果 x 非负,则将高序空位位置设置为零,如果 x 为负,则将其设置为 1。 当 x...
二进制
运算
——
位移
运算
位移
运算
位移
运算
是我们既陌生又熟悉的二进制操作。陌生是指不易理解且不常用,熟悉是指“别人家的开发工程师”在代码中经常使用这种方式进行高低位的截取、哈希计算,甚至运用在乘除法
运算
中。向右
位移
1位近似表示除以2(如表1-2 所示),十进制的奇数转化为二进制数后,在向右移时,最右边的1将被直接抹去,说明向右移对于奇数并非完全相当于除以2。在左移<<与右移>>两种
运算
中,符号位...
计算机基础之
位移
运算
1.前言 二进制整数最终都是以补码的形式呈现的。正数的最高位是0,负数的最高位是1。正数的原码,补码,反码都一样。负数的反码为原码取反,补码为反码加1。
位移
运算
有两种,一种是带符号
位移
运算
一种是不带符号
位移
运算
。 2.带符号
位移
运算
(<< 与 >>) 带符号
位移
运算
分为<<(左移)与>>(右移)。这两种
位移
,都是针对补码
运算
,符号位均参与
位移
运算
,除...
定点
运算
——
位移
运算
位移
运算
前提:下述的移位
运算
推理过程是建立在合理的移位
运算
基础上的,即移位
运算
的结果和实际
运算
结果一致
位移
运算
的数学意义
位移
运算
,相当于小数点的移动,对数值进行扩大或者缩小进制数倍 左移
运算
,小数点右移,扩大 右移
运算
,小数点左移,缩小
位移
运算
的规则
位移
运算
仅仅改变数值部分,符号位不变==(下述是有意义的
位移
运算
)== 删除原则:右移,左添右省;左移,右添左省 0,001101...
Java SE
62,622
社区成员
307,252
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章