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

宁波网站建设专业定制做暧免费网站

宁波网站建设专业定制,做暧免费网站,如何建设农业推广网站,做网站过程视频针对移位#xff08;Shift Operator#xff09;操作符是最基本的操作符之一#xff0c;几乎每种编程语言都包含这一操作符。 同时我们对移位运算又会觉得比较陌生和困惑#xff0c;这是因为移位运算除了在 JDK 底层你会遇到不少#xff0c;还有就是在各种奇葩的面试题会遇…针对移位Shift Operator操作符是最基本的操作符之一几乎每种编程语言都包含这一操作符。 同时我们对移位运算又会觉得比较陌生和困惑这是因为移位运算除了在 JDK 底层你会遇到不少还有就是在各种奇葩的面试题会遇到一些在实际使用的时候这个运算其实很难用得上。 因为用得不多所以在大部分人的面对的代码情况下根本不会考虑移位运算所以对移位运算我们大致知道下就可以了至于如何奇葩的运算你只知道一些基本概念就行其实很多时候并不需要你直接用移位运算算出来。 基本概念 针对移位运算我们需要了解有几个基本概念。 3 个移位运算符 Java 只有 3 个移位运算符  左移、  带符号右移和  无符号右移。 为什么有 3 个移位运算不是左就是右为什么有 3 个 因为 Java 的整数是有符号的整数所以针对符号转换 Java 添加了一个无符号右移。 只能用于整数 Java 的移位运算不能用于浮点数只能用于整数。 因为 Java 可以处理整数的长度不一样所以移位运算只会用在 int 上虽然其他数据类型也可以用但是都是在转换成 int 后进行计算的。 类型长度long64 位int32 位short16 位byte8 位char8 位 整数 2 进制表达 在 Java 的整数 int 表达中其中有一个位留给了符号位置所以真正可以存储数据的位为 31 位。 因此Int 的存储范围为[-2^31,2^31-1]所以上面的指数为 31 而不是 32 的原因是其中有一位留给了符号位。 左移操作符 左移操作符  是将数据转换成二进制数后向左移若干位高位丢弃低位补零 。 如下面的代码 log.debug({}/{}, Integer.toBinaryString(12), Integer.parseInt(Integer.toBinaryString(12), 2));log.debug({}/{}, Integer.toBinaryString(12 1), Integer.parseInt(Integer.toBinaryString(12 1), 2));log.debug({}/{}, Integer.toBinaryString(12 8), Integer.parseInt(Integer.toBinaryString(12 1), 2));程序的输出为 12:16:18.985 [main] DEBUG com.ossez.toolkits.codebank.tests.EmptyQuickTest - 1100/12 12:16:18.986 [main] DEBUG com.ossez.toolkits.codebank.tests.EmptyQuickTest - 11000/24 12:16:18.986 [main] DEBUG com.ossez.toolkits.codebank.tests.EmptyQuickTest - 110000000000/24因为都在末尾补 0 所以在范围内不管你是左移 1 位还是超过 1 位都是等于 10 进制的数乘以 2。 ​编辑 带符号右移操作符 Java中整型表示负数时最高位为符号位正数为0 负数为1 。 是带符号的右移操作符将数据转换成二进制数后向右移若干位高位补符号位低位丢弃 。 对于正数作右移操作时具体体现为高位补0 负数则补1 这个主要是针对右移动的时候高位出现空白我们应该还是补 0 还是 1 的问题。 带符号的右移意思就是当高位出现空白的时候我们补符号位根据当前的数据不同而不同。 如下面的代码 log.debug({}, Integer.toBinaryString(-12));log.debug({}, Integer.toBinaryString(-12 1));log.debug({}, Integer.toBinaryString(-12 8)); 运行结果为 12:25:32.765 [main] DEBUG com.ossez.toolkits.codebank.tests.EmptyQuickTest - 11111111111111111111111111110100 12:25:32.765 [main] DEBUG com.ossez.toolkits.codebank.tests.EmptyQuickTest - 11111111111111111111111111111010 12:25:32.765 [main] DEBUG com.ossez.toolkits.codebank.tests.EmptyQuickTest - 11111111111111111111111111111111我们可以看到上面的移位为带有符号的移位置所有移动的高位在负数的时候都被补充为符号位了。 如果是负数的话就会补充为 1 。 无符号右移操作符 无符号右移操作符  与 类似都是将数据转换为二进制数后右移若干位不同之处在于不论负数与否结果都 是高位补零低位丢弃 。 这个操作符的计算对负数的计算会因为补位的不同而变成整数。 如下面的代码。 log.debug(---- Shift Operator ---);log.debug({}, Integer.toBinaryString(-12));log.debug({}/{}, Integer.toBinaryString(-12 1), Integer.parseInt(Integer.toBinaryString(-12 1), 2));log.debug({}/{}, Integer.toBinaryString(-12 8), Integer.parseInt(Integer.toBinaryString(-12 8), 2));程序输出如下 13:25:19.374 [main] DEBUG com.ossez.toolkits.codebank.tests.EmptyQuickTest - ---- Shift Operator --- 13:25:19.374 [main] DEBUG com.ossez.toolkits.codebank.tests.EmptyQuickTest - 11111111111111111111111111110100 13:25:19.374 [main] DEBUG com.ossez.toolkits.codebank.tests.EmptyQuickTest - 1111111111111111111111111111010/2147483642 13:25:19.374 [main] DEBUG com.ossez.toolkits.codebank.tests.EmptyQuickTest - 111111111111111111111111/16777215​编辑 从上面的代码输出中我们会发现对应的 2 进制长度不一样因为在 Java 程序中对于二进制前面为 0 的时候在输出的时候会进行丢弃的。 所以显示的长度不一样如果希望显示长度一致的话前面补 0 就可以了。 Java 中的移位运算符Shift Operator - Java - OSSEZ
http://www.yutouwan.com/news/207551/

相关文章:

  • 深圳网站建设联雅网络推广渠道方案
  • 北京网站优化步宁波网站设计推广服务公司
  • 做网站要注意哪些竞价广告是什么意思
  • app开发学习网站河南省建设厅网站无事故证明
  • 网站logo设计在线生成上海公司牌照价格走势
  • 网站建设后台编程专业网站建设 公司排名
  • 广告设计素材免费的网站做网站 违法
  • 四网一体网站建设方案怎么给网站加图标
  • 漳州市住房城乡建设局网站text-indent:2em wordpress
  • 最好的网站建设团队杭州企业网站制作
  • 学院网站群建设的目标公众号小程序二维码怎么生成
  • 无锡网站营销公司哪家好域名大全免费网站
  • 建设银行网站百度一下移动网上购物网站开发
  • 山东济南seo整站优化费用传媒公司网站
  • 做网站的体会那些网站是做金融行业
  • 网站开发网站运营怎么做河南安阳市滑县
  • 奇网企业网站管理系统统一门户网站
  • 网站营销推广策划书广州手机网站建设报价表
  • 建设银行车主卡网上交罚款网站沈阳网站建设哪家便宜
  • 网站如何创建首页百度推广入口登录
  • seo综合苏州seo优化排名推广
  • 建设网站网址是多少跟黄聪学WordPress主题开发
  • 杭州网站建设报价网站文件服务器
  • 做与食品安全有关的网站百度助手下载
  • 国外做螺栓比较好的网站注册账号验证码平台
  • 手表哪个网站正品网络营销热点事件案例分析
  • 襄阳网站建设哪家好珠海市住房和建设局网站
  • h5网站开发公司张家口专业做网站公司
  • 华西医院网站开发WordPress站点添加ssl证书
  • 网站怎样制作广州建筑集团股份有限公司