二进制相关知识及操作
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)
加载更多
留言
开源项目
- B5LaravelCMF:基于laravel9+bootstrap3实现的快速开发后台
- B5YiiCMF:基于Yii2+bootstrap3 实现的快速开发后台管理系统
- B5ThinkCmf:基于ThinkPHP6+bootstrap3 实现的快速开发后台管理系统
- B5GoCmf:gin + sqlx +bootstrap 实现后端管理系统
- See also:gitee.com@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待修复
文章分类
标签