>> 算数右移和>>>逻辑右移
2016-12-13 15:48
253 查看
先说下原码和补码, 只说负数 以-2 为列 int 32位
-2 的原码为 10000000 00000000 00000000 00000010
原码转换补码 原码 符号位不变 其余全部取反 然后+1
即 -2 的补码为 11111111 11111111 11111111 11111110
计算机中数字采用补码表示,原因 0的表示和运算等原因
>> 算数右移 考虑符号位 -2>>1 后计算机里表示为 11111111 11111111 11111111 11111111 转成原码为 100000000000000000000。。。1 即 -1
>>> 逻辑右移 不考虑符号位 左边都填0 所以 -2>>>1 后计算机里的表示为 01111111111111111111111111111111 转原码为 01111111111111111111111111111111 因为正数的原码和补码反码都一样,所以结果为2147483647
Ps 反码: 原码 符号位不变 其余位取反。
-2 的原码为 10000000 00000000 00000000 00000010
原码转换补码 原码 符号位不变 其余全部取反 然后+1
即 -2 的补码为 11111111 11111111 11111111 11111110
计算机中数字采用补码表示,原因 0的表示和运算等原因
>> 算数右移 考虑符号位 -2>>1 后计算机里表示为 11111111 11111111 11111111 11111111 转成原码为 100000000000000000000。。。1 即 -1
>>> 逻辑右移 不考虑符号位 左边都填0 所以 -2>>>1 后计算机里的表示为 01111111111111111111111111111111 转原码为 01111111111111111111111111111111 因为正数的原码和补码反码都一样,所以结果为2147483647
Ps 反码: 原码 符号位不变 其余位取反。
相关文章推荐
- 1:算数左移<<,2:算数右移>>,3:逻辑右移>>>
- java 中的算数右移( >> ) 和逻辑右移( >>> )
- C/C++中的逻辑右移、算数右移、循环左移、循环右移
- 算数右移和逻辑右移
- 算数右移和逻辑左移
- 算数运算符(+-*/)优先级>移位运算>位运算>逻辑运算
- 码农小汪-剑指Offer之9 - 二进制中1的个数 算数右移 逻辑左移
- 算数移位(<<, >>)与逻辑移位
- C语言 - > 算数运算 / 赋值运算 / 关系运算 / 逻辑运算 / 三目运算
- C程序设计语言- 类型、运算符与表达式-2.1----变量名、数据类型及长度、常量、声明、算数运算符、关系运算符与逻辑预算符
- <转>Spark中组件Mllib的学习26之逻辑回归-简单数据集,带预测
- iota和<<左移>>右移的用法
- <<编程珠玑>>笔记之使用位逻辑运算来实现位向量
- <转>Spark Mllib逻辑回归算法分析
- 按位与(&)按位或(|)按位异或(^)按位取反(~)左移(<<)右移(>>)
- 逻辑 循环算数 左移 右移 和其在java中的应用
- 逻辑和算数以及进制
- java中逻辑右移">>>"算术右移">>"的区别
- 深入理解计算机系统(3.4)---算数与逻辑运算指令详解
- 深入理解计算机系统(3.4)---算数与逻辑运算指令详解