《程序员的数学基础课-二进制,了解计算机的源头》学习笔记
2018-12-11 本文已影响63人
冰果2016
二进制,了解计算机的源头
![](https://img.haomeiwen.com/i1436560/e43968f209c75f52.jpeg)
二进制的位操作:
![](https://img.haomeiwen.com/i1436560/dbbcc8f62a4348e6.jpeg)
二进制左移一位,就是将数字翻倍
// javascript左移运算符<<
53 << 1; // 106
53 << 2; // 212
// javascript左移赋值运算符<<=
var temp = 53;
temp <<= 2; // temp = 212
![](https://img.haomeiwen.com/i1436560/c9f8d549cb18ced7.jpeg)
二进制右移一位就是将数字除以2并求整数商。右移位有两种表达方式>>,>>>。因为在javaScript,JAVA的二进制中最高位为符号位。当符号号为0时表示正数,当符号为1时表示负数。
![](https://img.haomeiwen.com/i1436560/28a88ec6bc599ef5.jpeg)
算数右移时保持符号位不变,除符号之外的右移一位并补0,补的0仍然在符号位之后。
// javascript右移位运算符>>
53 >> 1 // 26
212 >> 3 // 26
-53 >> // -27
-212 >> 3 // -27
// javascript右移赋值运算符<<=
var temp = 53;
temp >>= 2; // temp = 13
![](https://img.haomeiwen.com/i1436560/a3df80e1b07be4fd.jpeg)
逻辑右移1位,左边补0即可。
// javascript无符号右移位运算符>>>
53 >>> 1 // 26
212 >>> 3 // 26
-53 >>> 1 // 2147483621
-212 >>> 3 // 536870885
// javascript无符号右移位赋值运算符>>>
var temp = 53;
temp >>>= 2; // temp = 13
位的"异或"
两个数值按位异或结果为0,是这两个数值相等的必要充分条件,可以作为判断两个变量是否相等的条件。
![](https://img.haomeiwen.com/i1436560/bcfc48125215ab47.jpeg)