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 位运算问题
293浏览 • 1回复 待解决
HarmonyOS 数据库查询是否支持位运算
395浏览 • 1回复 待解决
16进制数按位与结果异常
314浏览 • 1回复 待解决
用MYSQL做运算和用PHP做运算,哪个优?
2459浏览 • 1回复 待解决
HarmonyOS 有关异步操作
458浏览 • 1回复 待解决
HarmonyOS 系统原生的JSON库在序列/反序列64位大整数时报异常
257浏览 • 1回复 待解决
HarmonyOS 有关共享库的问题
809浏览 • 1回复 待解决
HarmonyOS ArkTS中运算符重载怎么写
287浏览 • 1回复 待解决
有关 Ability 使用问题
696浏览 • 1回复 待解决
HarmonyOS 有关地图轨迹的问题
309浏览 • 1回复 待解决
HarmonyOS 有关经纬度问题
442浏览 • 1回复 待解决
HarmonyOS 有关多线程的资料文档
399浏览 • 1回复 待解决
有关harmony next的问题
569浏览 • 0回复 待解决
HarmonyOS Webview有关位置管理的示例
684浏览 • 1回复 待解决
HarmonyOS 有关webview Header无法更新的问题
465浏览 • 1回复 待解决
HarmonyOS 加减乘除的运算方法的api是什么
254浏览 • 1回复 待解决
HarmonyOS 有关应用的通知开发(远程push)
402浏览 • 1回复 待解决
请教 sql 有关分组聚合问题?
3555浏览 • 1回复 待解决
有关深色模式开发的文档
2077浏览 • 1回复 待解决
有关FA的多端适配问题
6748浏览 • 1回复 待解决
是否有关闭整个App的API
1136浏览 • 1回复 待解决
HarmonyOS是否有关于网络环境的优化方案
837浏览 • 1回复 待解决
ArkTs中的扩展运算符..是否和JS中的..运算符是一样的
664浏览 • 1回复 待解决
HarmonyOS 怎么保留两位小数
393浏览 • 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
所以本身结果也是没问题的,符号位溢出了。
做无符号右移即可。
打印