javascript高级程序设计读书笔记--二进制移位

来源:互联网 发布:门禁复制软件 编辑:程序博客网 时间:2024/05/22 12:29
<!DOCTYPE html><html><head>    <title>Unsigned Right Shift Example 1</title>    <script type="text/javascript">  /*想象一个32位的格子,每个格子里面放的是0和1①<<左移 符号位不动 其他31位向左移动,然后右边多出的空位全部补0②>>有符号的右移 符号位不动其他31位向右移动,符号位右侧多出的空白位补符号位的值,符号位是0,就补0,是1就补③>>>无符号的右移 32位向右移动,左侧多出的用0补 正数效果同有符号右移 负数无符号右移后会变成很大的正数④ 计算机中负数是以补码形式存在的,负数求补码的步骤是1.求其绝对值的原码 2.求该原码的反码 3.反码加1*/    //00000000000000000000000000000010 绝对值的原码//11111111111111111111111111111101 反码//11111111111111111111111111111110 反码+1得到补码   var oldValue = -2;              //11111111111111111111111111111110 操作这个补码        var newValue = oldValue << 5;   //11111111111111111111111111000000 操作完毕,开始求对应原码    //11111111111111111111111110111111 补码-1    //00000000000000000000000001000000 取反,得到原码 及64    //   alert(newValue);                //64  //0*1 + 0*2 + 0*4 + 0* 8 + 0*16 + 0*32 + 1*64 = 64//00000000000000000000000001000000 绝对值64的原码//11111111111111111111111110111111 反码//11111111111111111111111111000000 补码var oldValue = -64;     //11111111111111111111111111000000 无符号右移会把这个补码当成原码处理 var newValue = oldValue >>> 5;//00000111111111111111111111111110 无符号右移完毕 直接当成原码解析alert(newValue);                //134217726    </script></head><body>  </body></html>

0 0
原创粉丝点击