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 位运算问题
30浏览 • 1回复 待解决
用MYSQL做运算和用PHP做运算,哪个优?
2217浏览 • 1回复 待解决
HarmonyOS 有关异步操作
226浏览 • 1回复 待解决
HarmonyOS 有关共享库的问题
489浏览 • 1回复 待解决
HarmonyOS 有关经纬度问题
63浏览 • 1回复 待解决
HarmonyOS 有关地图轨迹的问题
45浏览 • 1回复 待解决
有关 Ability 使用问题
339浏览 • 1回复 待解决
HarmonyOS 怎么保留两位小数
25浏览 • 1回复 待解决
HarmonyOS HarmonyOSTextInput组件怎么实现每输入三位四位数字自动添加空格
317浏览 • 1回复 待解决
HarmonyOS Webview有关位置管理的示例
404浏览 • 1回复 待解决
HarmonyOS 加减乘除的运算方法的api是什么
32浏览 • 1回复 待解决
HarmonyOS 有关webview Header无法更新的问题
103浏览 • 1回复 待解决
有关harmony next的问题
257浏览 • 0回复 待解决
HarmonyOS OH_AudioCaptureInfo结构缺少了位深的参数,音频采样位深是多少呢
35浏览 • 1回复 待解决
HarmonyOS 小数点如何保留两位
45浏览 • 1回复 待解决
HarmonyOS TextInput输入保留三位小数
30浏览 • 1回复 待解决
HarmonyOS 有关应用的通知开发(远程push)
30浏览 • 1回复 待解决
HarmonyOS是否有关于网络环境的优化方案
371浏览 • 1回复 待解决
有关深色模式开发的文档
1713浏览 • 1回复 待解决
有关FA的多端适配问题
6276浏览 • 1回复 待解决
请教 sql 有关分组聚合问题?
3333浏览 • 1回复 待解决
ArkTs中的扩展运算符..是否和JS中的..运算符是一样的
476浏览 • 1回复 待解决
是否有关闭整个App的API
897浏览 • 1回复 待解决
HarmonyOS 浮点数如何保留1位小数
1040浏览 • 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
所以本身结果也是没问题的,符号位溢出了。
做无符号右移即可。
打印