老王讲二进制 & 0xFF;「建议收藏」

老王讲二进制 & 0xFF;「建议收藏」$a=2;$b=($a<<6)&0xFF;var_dump($b);die;代码如上 最后结果是128。   $a  二进制左移6位 相当于$a*2^6(2的6次方)。现在告诉你后边的  &0xFF是什么鬼东西。这个东西的有无并不会影响计算结果,但严格意义上说应该有。因为前边的位移运算是二进制算法,计算结果是一个二进制数据,byte类型的

大家好,又见面了,我是你们的朋友全栈君。

$a = 2;
$b = ($a<<6) & 0xFF;
var_dump($b);die;

代码如上  最后结果是 128 。     

$a   二进制 左移6 位  相当于 $a * 2^6 (2的6次方)。

现在告诉你后边的  &0xFF 是什么鬼东西。这个东西的有无并不会影响计算结果,但严格意义上说应该有。

因为前边的位移运算是二进制算法,计算结果是一个二进制数据,byte类型的数字要&0xff再赋值给int类型,其本质原因就是想保持二进制补码的一致性。

当byte要转化为int的时候,高的24位必然会补1,这样,其二进制补码其实已经不一致了,&0xff可以将高的24位置为0,低8位保持原样。这样做的目的就是为了保证二进制数据的一致性。

计算机存储数据机制:正数存储的二进制原码,负数存储的是二进制的补码。  补码是负数的绝对值反码加1。

比如-12,-12 的绝对值原码是:0000 1100  取反: 1111 0011  加1:  1111 0100

byte –> int   就是由8位变 32 位 高24位全部补1: 1111 1111 1111 1111 1111 1111 1111 0100 ;

0xFF 是计算机十六进制的表示 0xFF的二进制表示就是:1111 1111。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/150782.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • GRE ×××

    GRE ×××

    2021年8月18日
  • 在线词云制作生成 tagxedo

    在线词云制作生成 tagxedo在线词云制作生成tagxedo在线词云10行Python代码的词云待办在线词云原博文地址和详细使用方法介绍在线词云制作tagxedo在线网址http://www.tagxedo.com/注意点:直接访问http://www.tagxedo.com/app.html可能会超时,先进主页再点击右上角的create按钮进入创作页面会加载更快;需要下载一个软件,使用IE浏览器可加载上述软件,谷歌和EDGE实测都无法加载;导出的词云图片:10行Python代码的词云原博客地址:1

    2022年10月26日
  • 02.pycharm中配置PyInstaller打包工具

    02.pycharm中配置PyInstaller打包工具我用的环境版本python解释器:3.6.6pycharm开发工具:2018.3.6社区版PyInstaller打包工具:4.5.1pycharm中配置PyInstaller打包工具opts可选的参数参数含义-F-onefile,打包成一个exe文件-D-onefile,创建一个目录,包含exe文件,但会依赖很多文件(默认选项)-c-console,-nowindowed,使用控制台,无窗口(默认)-w-Windowed,-noconsole,使用窗

    2022年10月28日
  • 敏捷项目管理的流程_敏捷开发项目管理方法

    敏捷项目管理的流程_敏捷开发项目管理方法引言:敏捷绝非某一种特定的开发方法,它只是一种应对快速变化的需求的一种软件开发能力。敏捷本身只包含了《敏捷软件开发宣言》和《敏捷软件的十二条原则》两份文档。敏捷的起源:敏捷开发以用户的需求进化为核心,采用迭代、循序渐进的方法进行软件开发。在敏捷开发中,软件项目在构建初期被切分成多个子项目,各个子项目的成果都经过测试,具备可视、可集成和可运行使用的特征。换言之,就是把一个大项目分为多个相互联系,但也可独立运行的小项目,并分别完成,在此过程中软件一直处于可使用状态。目前很多互联网公司都在搞或者想

    2022年10月30日
  • 全局作用域中,用const和let声明的变量去哪了?

    全局作用域中,用const和let声明的变量去哪了?

    2021年6月17日
  • 2022年比较有前景的行业_2021idea创建web项目

    2022年比较有前景的行业_2021idea创建web项目为什么要用WebIDE?IDE是集成开发环境(IntegratedDevelopmentEnvironment)的缩写。在以前,开发者一般是将IDE下载到本地,安装、配置后再开始开发。但随着Web技术的持续发展,就像绝大部分办公者已经在工作中使用在线文档来代替传统Office软件一样,越来越多的开发者开始尝试在线编写代码。结合云计算和容器的能力,使用WebIDE来开发应用程序更加方便、快捷,也拥有更强的扩展性。最有前景的WebIDE通过对市面上大量.

    2022年10月17日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号