HarmonyOS 有关位运算异常
执行以下代码,发现左移24位时就出现异常,这个有什么办法转为正常16进制FF000000,目前使用((0xFF<<24) &0xFFFFFFFF)还是得不到期望的FF000000。
LogUtil.d("左移8:"+(0xFF<<8))//左移8:65280 >> FF00
LogUtil.d("左移16:"+(0xFF<<16))//左移16:16711680 >> FF0000
LogUtil.d("左移24:"+(0xFF<<24))//左移24:-16777216 >> FFFFFFFFFF000000
LogUtil.d("左移32:"+(0xFF<<32))//左移32:255 >> FF
HarmonyOS
赞
收藏 0
回答 1
待解决
相关问题
HarmonyOS 位运算问题
765浏览 • 1回复 待解决
HarmonyOS 数据库查询是否支持位运算
1039浏览 • 1回复 待解决
16进制数按位与结果异常
813浏览 • 1回复 待解决
用MYSQL做运算和用PHP做运算,哪个优?
3065浏览 • 1回复 待解决
HarmonyOS 系统原生的JSON库在序列/反序列64位大整数时报异常
805浏览 • 1回复 待解决
HarmonyOS 有关异步操作
944浏览 • 1回复 待解决
HarmonyOS 有关共享库的问题
1397浏览 • 1回复 待解决
有关 Ability 使用问题
1389浏览 • 1回复 待解决
HarmonyOS ArkTS中运算符重载怎么写
971浏览 • 1回复 待解决
HarmonyOS 有关地图轨迹的问题
779浏览 • 1回复 待解决
HarmonyOS 有关经纬度问题
1065浏览 • 1回复 待解决
HarmonyOS 有关多线程的资料文档
957浏览 • 1回复 待解决
有关harmony next的问题
1360浏览 • 0回复 待解决
HarmonyOS Webview有关位置管理的示例
1260浏览 • 1回复 待解决
ArkTs中的扩展运算符..是否和JS中的..运算符是一样的
1375浏览 • 1回复 待解决
HarmonyOS 有关webview Header无法更新的问题
1001浏览 • 1回复 待解决
HarmonyOS 加减乘除的运算方法的api是什么
683浏览 • 1回复 待解决
有关深色模式开发的文档
2698浏览 • 1回复 待解决
有关FA的多端适配问题
7419浏览 • 1回复 待解决
请教 sql 有关分组聚合问题?
4234浏览 • 1回复 待解决
HarmonyOS 有关应用的通知开发(远程push)
905浏览 • 1回复 待解决
HarmonyOS是否有关于网络环境的优化方案
1517浏览 • 1回复 待解决
HarmonyOS 16位随机数的方法
1043浏览 • 1回复 待解决
是否有关闭整个App的API
1682浏览 • 1回复 待解决
HarmonyOS HarmonyOSTextInput组件怎么实现每输入三位四位数字自动添加空格
960浏览 • 1回复 待解决
关于二进制数向左位移<<,先转成补码再左移运算,得到的值当成补码求原码。
左移过程中会把符号位也当普通数值位移(即符号位参与左移)
比如:255<<24 左移24位
0000 0000 0000 0000 0000 0000 1111 1111 255的原码
0000 0000 0000 0000 0000 0000 1111 1111 255的反码
0000 0000 0000 0000 0000 0000 1111 1111 255的补码
1111 1111 0000 0000 0000 0000 0000 0000 左移24位之后的值(注意最高位符号位0也被位移了,左移会把符号位当成普通数值操作,左移超过int32位的数值将被直接舍弃)
1111 1110 1111 1111 1111 1111 1111 1111 把左移的值当成补码来算反码,因为左移后的最高位符号位已经变成1是负数了,所以算反码就应该-1来计算(这里是要看符号位来算反码原码的)
1000 0001 0000 0000 0000 0000 0000 0000 继续求反得出原码,此时再转十进制就是返回值-16777216
255<<24=-16777216
所以本身结果也是没问题的,符号位溢出了。
做无符号右移即可。
打印