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

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

    开源项目
    最新评论
    34 :感谢你的开源项目
    奥德赛 on Electron+vue搭建项目或将vue项目转为electron :大声道奥术大师大声道
    cmf :你好 你的B5ThinkCMF下载后有点问题 能帮忙解决下么?
    laravel新手 :您好,laravel9+bootstrap3实现的快速开发后台,下载部署后,刷新加载,F12我看了下,我部署的是240毫秒左右,您部署的测试版本只有50毫秒左右,能辛苦指导下,如何优化lv吗,谢谢
    瀑布 :你好,yii我下载在本地后台,接口请求非常慢,通过debug我发现session_started执行时间很长,想问下这个是需要哪个地方配置吗?
    瀑布 :你好,今天看到你的开源项目,很喜欢,感谢你的开源
    冰舞 on Laravel定时任务的实现 :测试测试测试测试测试测试 测试测试测试测试测试测试测试测试测试测试
    文章分类