二进制
1.适合计算机的进制
二进制:计算机内部用二进制:运算简单,简化了计算机结构
其他进制:
八进制:适用于12位和36位计算机系统
标志的开头用0表示,用0~7的数字表示。
16进制:用0~9,A,B,C,D,E,F
表示表达长度短,变得更常用。标志的开头用0x表示。
2.二进制位运算
运算符 | 运算 | 示例 |
& | 与运算 | 6 & 3 = 2 |
| | 或运算 | 6 | 3 = 7 |
^ | 异或运算 | 6 ^ 3 = 5 |
~ | 反码 | ~6 = -7 |
<< | 左移 | 3 << 2 = 12 3*2*2=12 |
>> | 右移 | 3 >> 1 = 1 3/2=1 |
>>> | 无符号右移 | 3>>>1 = 1 3/2=1 |
优点:特定情况下,计算方便,速度快,被支持面广
如果用算数方法,速度慢,逻辑复杂
(1)按位与&:
两位全为1,结果才为1。
0&0=0;0&1=0;1&0=0;1&1=1;
如6的二进制结果为:0110 ;3的二进制结果为:0011
与运算结果为:0001 所以结果为:2
位运算的特殊用法:
1)清零。如果想将一个单元清零,即使其全部二进制位为0,只要与一个各位都为0的数值相与,结果为零。
2)取一个数中指定位。例:设X=10101110,取X的低4位,用X&00001111 = 00001110即可得到。
方法:找一个数,对应X要取的位,该数的对应位为1,其余位为0,此数与X进行“与运算”可以得到X中的指定位。
(2)按位或&:
只要有一个为1,结果就为1。
0&0=0;0&1=1;1&0=1;1&1=1;
如6的二进制结果为:0110 ;3的二进制结果为:0011
或运算结果为:0111 所以结果为:7
或运算的特殊用法:
1)常用来对一个数据的某些位置1
例:将X=1010 0000的低4位置为1,用X|0000 1111 = 1010 1111 即可得到。
方法:找一个数,对应X要置1的位,该数的对应位为1,其余位为0,此数与X进行“或运算”可使X中的某些位置1。
(3)异或运算^:
两个相应位为“异”(值不同),则改位结果为1,否则为0。
0&0=0;0&1=1;1&0=1;1&1=0;
如6的二进制结果为:0110 ;3的二进制结果为:0011
异或运算结果为:0101 所以结果为:5
异或运算的特殊用法:
1)使特定位翻转。找一个数,对应X要翻转的各位,该数的对应位为1,其余位为0,此数与X对应位异或即可。
例:X=1010 1110,使X低4位翻转,用X ^ 0000 1111 = 1010 0001即可得到。
2)与0相异或,保留原值
例:X ^ 0000 0000 = 1010 1110即可得到。
3)用来进行两个变量交换值更快,效率更高。
两个变量交换值的方法:
I:借助第三个变量来实现
C=A;A=B;B=C;
II:利用加减法实现两个变量的交换:
A=A+B;B=A-B;A=A-B;
III:用位异或运算来实现,也是效率最高。
原理:利用一个数异或本身等于0和异或运算符合交换率。
如:A=A^B;B=A^B;A=A^B;
(4)取反运算~:
对一个二进制数按位取反,则将0变为1,1变为0。
~1=0;~0=1;
(5)左移运算<<:
将一个运算对象的各二进制位全部左移若干位(左边的二进制位丢弃,右边补0)。
如2的二进制位为0010,向左边移动1位则变为了0100。所以 2<<1 = 4
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 在博客后台为内容模块实现增删改查功能
- 解决Debian系统自动更新软件包的问题的方法
- PHP 基于 Cookie + Session 实现用户认证功能
- 创建并运行一个新的 Laravel 项目
- linux nslookup命令使用详解
- Go 数据存储篇(五):建立数据库连接并进行增删改查操作
- Laravel 路由使用入门
- Go 数据存储篇(六):数据表之间的关联关系和关联查询
- 搭建nextcloud私有云存储网盘的教程详解
- Laravel 路由使用进阶
- 使用dig/nslookup命令查看dns解析的方法步骤
- Go 数据存储篇(七):GORM 使用入门
- 在 Linux 上使用 Multitail命令的教程
- 深入理解linux执行文件提示No such file or directory的背后原因
- Laravel 控制器:从 MVC 模式聊起