社区
Java SE
帖子详情
byte没有位操作吗?为什么我值是不对的?
孤尽JavaSea
2009-10-09 09:31:37
byte d = 1;
byte e = (byte) (d | 10000000);
我觉得e 应该是 -1 .
可结果是-127.
对于位操作我还是比较生疏。
...全文
125
11
打赏
收藏
byte没有位操作吗?为什么我值是不对的?
byte d = 1; byte e = (byte) (d | 10000000); 我觉得e 应该是 -1 . 可结果是-127. 对于位操作我还是比较生疏。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
东北小妞
2009-10-10
打赏
举报
回复
byte d = 1;
short e = (short)(d | 10000000);
System.out.print(e);
结果为:-27007
byte d = 1;
int e = (int)(d | 10000000);
System.out.print(e);
结果为:10000001
2楼应该是正确的
Dan1980
2009-10-09
打赏
举报
回复
看过很多想当然的程序,楼主的为其中之最也~
huangqibing0626
2009-10-09
打赏
举报
回复
[Quote=引用 4 楼 java_gannbare 的回复:]
10000000 对应的二进制应该是100110001001011010000000
可不可能是这样!!!
[/Quote]
貌似你什么也没说!
justinavril
2009-10-09
打赏
举报
回复
[Quote=引用 4 楼 java_gannbare 的回复:]
10000000 对应的二进制应该是100110001001011010000000
可不可能是这样!!!
[/Quote]
什么意思 我没明白...
孤尽JavaSea
2009-10-09
打赏
举报
回复
10000000 对应的二进制应该是100110001001011010000000
可不可能是这样!!!
steel1985
2009-10-09
打赏
举报
回复
[Quote=引用 2 楼 justinavril 的回复:]
感觉应该是这样的:
10000000 对应的二进制应该是100110001001011010000000,而1的就是0001,都省略前面无所谓的0了,然后两者或运算,得到100110001001011010000001,然后截取后8位,也就是10000001。第一位是符号位,是1也就是负数,所以是补码表示的,所以各位取反(符号位不变),再加1,也就是-127了。
[/Quote]
有道理
justinavril
2009-10-09
打赏
举报
回复
感觉应该是这样的:
10000000 对应的二进制应该是100110001001011010000000,而1的就是0001,都省略前面无所谓的0了,然后两者或运算,得到100110001001011010000001,然后截取后8位,也就是10000001。第一位是符号位,是1也就是负数,所以是补码表示的,所以各位取反(符号位不变),再加1,也就是-127了。
老紫竹
2009-10-09
打赏
举报
回复
-1 应该是
FF
也就是
11111111
老张-AI
2009-10-09
打赏
举报
回复
呵呵 学习了
网络咖啡
2009-10-09
打赏
举报
回复
JAVA不支持代码直接写二进制的,如果想达到你的效果,写16进制的数字
byte d = 1;
byte e = (byte) (d | 10000000);
修改成:
byte d = 1;
byte e = (byte) (d | 0x80);
并且二进制编码为10000001的数值也不是-1,因为负数在程序中以补码形式存放,关于计算补码和源码的方法可以看我BLOG中《Java编程那些事儿》中关于二进制部分的讲述。
C语言的
位操作
- bit 、
byte
的清零,置1,提取,判断
本文详细介绍了
位操作
在嵌入式编程中的应用,包括按位运算符的使用、32bit数据的位/字节操作、STM32寄存器配置示例,以及如何利用
位操作
简化代码和节省空间。
获取
byte
的各个bit值_如何获取
byte
的各个bit值以及常见
位操作
本文详细介绍了如何获取
byte
的各个bit值,并提供了Java实现方法,包括位左移、位右移、与(&)、或(|)、异或(^)等常见
位操作
的示例。通过对
byte
进行
位操作
,可以有效地处理二进制数据,如信号采集板数据解析。
C语言
位操作
- bit 、
byte
的清零,置1,提取,判断
本文深入探讨嵌入式开发中寄存器的
位操作
,包括位的读取、清零、置1及判断,通过实例展示如何在C语言中实现这些操作,适用于STM32等MCU的开发。
Java的
byte
类型详解
本文详细探讨了Java中
byte
类型的特点,包括取值范围、赋值规则、四则运算注意事项及
位操作
运算,揭示了
byte
在智能硬件数据传输中的关键作用。
如何获取
byte
的各个bit值以及常见
位操作
本文详细介绍了如何将
Byte
转换为Bit值,包括分离
Byte
中的各个Bit,并提供了将Bit值组合回
Byte
的方法。此外,还解释了左移和右移运算符的作用及应用场景,以及与、或、异或等位运算符的使用。
Java SE
62,621
社区成员
307,251
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章