当前位置: 首页 > news >正文

一站式软文发布推广平台wordpress 文章附件

一站式软文发布推广平台,wordpress 文章附件,百度代理推广,做学校网站素材图片Kotlin 提供了几种用于操作整数各个位#xff08;bit#xff09; 的运算符。这些操作是由处理器直接支持的#xff0c;速度快且操作简单。在底层编程中非常重要#xff0c;比如设备驱动、低级图形处理、网络通信、加密和压缩等。 尽管计算机通常都有高效的硬件指令来执行算…Kotlin 提供了几种用于操作整数各个位bit 的运算符。这些操作是由处理器直接支持的速度快且操作简单。在底层编程中非常重要比如设备驱动、低级图形处理、网络通信、加密和压缩等。 尽管计算机通常都有高效的硬件指令来执行算术和逻辑操作但所有这些操作也都可以通过组合按位操作符、位移操作符和判断 0 操作来实现。位运算符Bitwise Operators 共有四种位运算符inv()按位非NOT即取反或补码or按位或ORand按位与ANDxor按位异或XOR这些运算符会一位一位地处理操作数的每一位并生成一个新的数值。inv() 是一元运算符它会将每一位的 0 变为 11 变为 0包括符号位也会改变。or 是二元运算符按位“或”只要任意一个操作数为 1结果就是 1否则是 0。and 是按位“与”只有两个操作数都为 1结果才是 1否则是 0。xor 是按位“异或”当两个操作数中正好一个为 1 时结果是 1否则是 0。这些运算符不仅可以作用于整数也可以作用于布尔类型。如果是整数进行的是位运算如果是布尔值进行的是逻辑运算除了 inv() 不能用于布尔类型。示例按位与、或、异或 val first 15 // 二进制1111 val second 10 // 二进制1010val bitwiseAnd first and second // 1111 1010 1010结果是 10 val bitwiseOr first or second // 1111 | 1010 1111结果是 15 val bitwiseXor first xor second // 1111 ^ 1010 0101结果是 5示例按位取反inv val first 35 // 二进制0..00100011 val second -35 // 二进制1..11011101补码val inverseFirst first.inv() // ~35 -36 val inverseSecond second.inv() // ~-35 34为什么 ~35 -36这是因为 Kotlin 使用**补码two’s complement**来表示整数。对任意正整数 n其按位取反是 -(n 1)。对负数 -n其按位取反是 n - 1。检查一个数是否能被 2 整除使用 and val a 5 val b 4val bitwiseAndA a and 1 // 101 001 001结果是 1 有余数不能整除 val bitwiseAndB b and 1 // 100 001 000结果是 0 没有余数可以整除位移操作符Bit-shift Operators Kotlin 还提供了三种位移操作符shl左移乘法低位补零shr带符号右移高位填符号位保留正负号ushr无符号右移高位补零结果永远为正。示例通过位移实现快速乘除法 var value 25 // 二进制0001 1001value value shl 1 // 左移1位0011 0010 50 value value shl 2 // 再左移2位1100 1000 200var anotherVal 14 anotherVal anotherVal shr 1 // 右移1位0111 7我们可以总结出 var newVal 25newVal newVal shl 1 // 25 * 2^1 50 newVal newVal shl 3 // 50 * 2^3 400 newVal newVal shr 2 // 400 / 2^2 100示例使用位移求区间中点 val left 10 val right 20val mid (left right) shr 1 // 结果是 15与 (left right) / 2 相同但位移方式更快。示例shr 与 ushr 的区别 val number1 5 val number2 -5val shrNumber1 number1 shr 1 // 0101 → 0010结果是 2 val ushrNumber1 number1 ushr 1 // 同上结果是 2 val shrNumber2 number2 shr 1 // 保留符号结果是 -3 val ushrNumber2 number2 ushr 1 // 补零结果是 2147483645shr 会根据符号保留符号位。ushr 总是左边补 0所以负数也变为正数。Kotlin 1.6 新增位旋转 val a 4val shiftRight a.rotateRight(1) // 0100 → 0010结果是 2 val shiftLeft a.rotateLeft(1) // 0100 → 1000结果是 8val b 3val shiftLeft b.rotateLeft(1) // 0011 → 0110结果是 6 val shiftRight b.rotateRight(1) // 0011 → 1..0001结果是 -2147483647rotateRight 会把最高位 1 移到符号位第 31 位结果变成负数。运算优先级 Kotlin 中位运算符和位移运算符的优先级低于加减乘除优先级从高到低运算符例子括号(expr)后缀自增自减expr, expr--前缀正负、自增自减-expr, expr, --expr乘、除、模*, /, %加减, -赋值及其组合, , -, * 等位运算和位移and, or, xor, shl, shr, ushr位运算符之间是从左到右执行的。例如 val mid left right shr 1无需加括号是因为 的优先级高于 shr相当于 val mid (left right) shr 1总结 在本节中我们学习了如何对整数的位进行操作理解了位运算与一些算术运算之间的对应关系位运算符逐位处理。位移运算符可以整体左移或右移一整串位。 虽然位运算看起来稍显复杂但这是理解底层编程和高效计算的基础。
http://www.zqtcl.cn/news/68542/

相关文章:

  • 关键词爱站网关键词挖掘工具济南网站建设策划方案
  • wordpress模板能修改吗9个广州seo推广神技
  • vs2015 手机网站开发wordpress7比2主题破解版
  • 仿qq网站程序假网站网站怎么做
  • 网站后台页面进不去做麻将网站
  • 做网站需要编程模拟登录wordpress c
  • 如何将vs做的网站备份出来建设网站网
  • 重庆最专业的房产网站建设手机浏览器网页加速器
  • 医疗器械做网站备案长春seo公司长春网站设计
  • 淮安网站seo建网站要花钱吗
  • 东阳网站建设公司公司网站制作开发公司
  • 站酷设计师网站wordpress产品页插件
  • cms 网站模板百度快照推广一年要多少钱
  • 广州做网站平台的企业wordpress静态404错误
  • 山东省建设局拖欠工资网站网站调优
  • 免费的网站域名申请网站建设学习东西
  • 想做个电影网站该怎么做网上注册公司官网入口
  • 观点网站陇南市建设局网站
  • 企业做网站建设遇到的问题帮别人做网站赚钱6
  • 如何选择企业网站建设公司怎样让自己做的网站被百度收录
  • 千度网站旅行网站模板
  • 四川红叶建设有限公司网站Orchard与wordpress
  • 做网站的骗术wordpress 少儿
  • 双域名网站织梦如何做英文网站
  • 你有网站 我做房东 只收佣金的网运营推广的方式和渠道有哪些
  • 什么网站可以做旅行行程单做休闲会所网站制作
  • 长沙网站微信开发兴国做网站
  • 外贸网站建设公司青岛复兴网站制作
  • 重庆网站开发解决方案wordpress图像描述
  • 思途智旅游网站开发重庆建设招标网站