Js关于负数的右移与无符号右移运算
2018-01-29 18:09
447 查看
对于带符号右移,若为负数,则在存储时首位表示符号位,其值为1,表示该值是负数的移位,在移位过程中,高位补1,若符号位是0,表示是正数,在移位过程中高位补零,两者的前提是符号位保持不变:
对于负数的右移:因为负数在内存中是以补码形式存在的,所有首先根据负数的原码求出负数的补码(符号位不变,其余位按照原码取反加1),然后保证符号位不变,其余位向右移动到X位,在移动的过程中,高位补1.等移位完成以后,然后保持符号位不变,其余按位取反加1,得到移位后所对应数的原码。即为所求。
举例1:
-100带符号右移4位。
-100原码: 10000000 00000000 00000000 01100100
-100补码: 保证符号位不变,其余位置取反加1
11111111 11111111 11111111 10011100
右移4位 : 在高位补1
11111111 11111111 11111111 11111001
补码形式的移位完成后,结果不是移位后的结果,要根据补码写出原码才是我们所求的结果。其方法如下:
保留符号位,然后按位取反
10000000 00000000 00000000 00000110
然后加1,即为所求数的原码:
10000000 00000000 00000000 00000111
所有结果为:-7
举例2:
-100无符号右移4位。
-100原码: 10000000 00000000 00000000 01100100
-100补码: 保证符号位不变,其余位置取反加1
11111111 11111111 11111111 10011100
无符号右移4位 : 在高位补0
00001111 11111111 11111111 11111001
即为所求:268435449
总结:正数的左移与右移,负数的无符号右移,就是相应的补码移位所得,在高位补0即可。
负数的右移,就是补码高位补1,然后按位取反加1即可。
对于负数的右移:因为负数在内存中是以补码形式存在的,所有首先根据负数的原码求出负数的补码(符号位不变,其余位按照原码取反加1),然后保证符号位不变,其余位向右移动到X位,在移动的过程中,高位补1.等移位完成以后,然后保持符号位不变,其余按位取反加1,得到移位后所对应数的原码。即为所求。
举例1:
-100带符号右移4位。
-100原码: 10000000 00000000 00000000 01100100
-100补码: 保证符号位不变,其余位置取反加1
11111111 11111111 11111111 10011100
右移4位 : 在高位补1
11111111 11111111 11111111 11111001
补码形式的移位完成后,结果不是移位后的结果,要根据补码写出原码才是我们所求的结果。其方法如下:
保留符号位,然后按位取反
10000000 00000000 00000000 00000110
然后加1,即为所求数的原码:
10000000 00000000 00000000 00000111
所有结果为:-7
举例2:
-100无符号右移4位。
-100原码: 10000000 00000000 00000000 01100100
-100补码: 保证符号位不变,其余位置取反加1
11111111 11111111 11111111 10011100
无符号右移4位 : 在高位补0
00001111 11111111 11111111 11111001
即为所求:268435449
总结:正数的左移与右移,负数的无符号右移,就是相应的补码移位所得,在高位补0即可。
负数的右移,就是补码高位补1,然后按位取反加1即可。
相关文章推荐
- 关于负数的右移与无符号右移运算小结
- 关于负数的右移>>与无符号右移>>>运算小结
- 关于负数的右移与无符号右移运算小结
- Java中关于无符号右移的问题 (~0L>>>-5)当右边为负数的情况
- 负数的带符号和不带符号的右移运算
- 负数的带符号和不带符号的右移运算
- 关于为什么负数要整数取反+1表示,而不指定首位为符号位,其它位为数值位。
- 关于MATLAB入门的简单记录11 符号运算
- 无符号数进行运算不可能产生负数!
- 关于Scanner类的用法----用Scanner接收两个数和一个符号完成相应运算
- javascript 运算符号大全.JS运算符示例(收集)
- 关于符号运算结果过长无法屏幕打印的问题
- [C++]指针运算中关于*和&符号的运算实验
- js中关于逻辑符号的连续使用问题
- 知乎上的一篇关于js赋值运算的一道面试题
- 关于 js 算术运算时精度问题
- 关于运算符号 ++ -- 的一个最简单明了的说明
- javascript 运算符号大全.JS运算符示例(转)
- [中英文对照]关于标点符号和运算符号的英语解释
- 关于负数求模运算