B5net

人生是场无尽旅途,欢声笑语,踟蹰彷徨,走过的是岁月,路过的是迷茫。向前,是希望极光;回首,是悠长深巷。

二进制相关知识及操作

Published on:2022-11-05

原码

    十进制数据的二进制表现形式就是原码,最左边的一个数字就是符号位,0为正,1为负


反码 


    正数的反码是其本身(等于原码),负数的反码是符号位保持不变,其余位取反。 反码的存在是为了正确计算负数,因为原码不能用于计算负数。将负数取反码后运算,结果再取反


补码 


    正数的补码是其本身,负数的补码等于其反码 +1。因为反码不能解决负数跨零(类似于 -6 + 7)的问题,所以补码出现了。负数转为补码,计算,结果-1 取反再转原码

原码、反码、补码总结


    二进制的最高位是符号位,0是正数 1是负数
    正数的原码、反码、补码都一样
    负数的反码=原码符号位不变+其他位取反
    负数的补码=它的反码+1
    0的反码和补码都是0
    在计算机运算的时候,都是以补码的方式运算,只要涉及到负数都应该转为补码在进行运算或判断,结果如果是负数也必须转为原码后换成10进制才位正确的


左移位 <<

     符号位不变,其他位整体左移,超出位数溢出截断,空缺的低位补0 
          2的10次方是1024   1024byte = 1kb  1024kb = 1M。所以2的20次方是M  30次方是G
         使用位移能够快速得到  2 << 10 是2KB   2<<20 是2MB


右移位 >>


     符号位不变,其他位整体右移,超出位数溢出截断,并用符号位补空缺的高位


按位与 &

    两个数生成2进制  每个位数进行与运算(都是1则返回1,否则都是 0)
       通过与1的按位与运算 可以快速判断奇偶    偶数 & 1 == 1  奇数 & 1 == 0
            1的二进是 0000 0001,所以除了第一位其他都是0,所以返回永远为0/1
            奇数的第一位永远为1 偶数为0,所以 与1按位与运算,1标识奇数  0为偶数


按位或 | 

       两个数生成2进制  每个位数进行或运算(一个为1则返回1,否则都是 0)


异或 ^ 

    如果a、b两个值不相同,则异或结果为1。如果a、b两个值相同,异或结果为0。(相同为0,不相同为1)
         偶数 ^ 1 == 偶数 + 1
奇数 ^ 1 == 奇数 - 1

    ^x ,缺少m^x中的m,根据x判断,x无符号是m为1,x有符号时m为-1


留言列表(0)

    留言

    B5net

    人生是场无尽旅途,欢声笑语,踟蹰彷徨,走过的是岁月,路过的是迷茫。向前,是希望极光;回首,是悠长深巷。

    开源项目
    最新评论
    wpstqe :作者大大有没有建一个QQ群的计划?
    流浪的PHPer :感谢开源项目,快速开发非常的好用!
    小白 :大佬您好 请问一下 http://b5laravelcmf.b5net.com/admin这个演示网址的全部代码有吗,gitee上不全呢,还能提供一下吗,感激不尽阿
    tz :大佬 B5YiiCMF 还开放吗
    weifox on GoLang常用的三方库 :还有 https://github.com/golang-module/carbon
    php :关于导出功能:1、B5thinkCMF部署后 参数的导出功能点击后就白屏了,不知道是哪里有问题?2、人员部门的导出功能没看懂怎么配置的? 只是启用exportshow=true吗 方便的话请答复下,谢谢!
    初学者 :您好! 部署了您的B5ThinkCMF,请教下 使用新增功能如何实现二级联动呢 ?谢谢
    11 :22
    pcy :前排围观
    Louis :冰舞的博客使用yii框架做的吧,B5ThinkCMF在本地部署后,登录系统的响应时间要比B5YiiCMF的登录时间长,还有一些Bug待修复
    文章分类