【逻辑位移和算数位移】

简介: 【逻辑位移和算数位移】

<< 运算符 && >> 运算符

正数位移

当 x>>n 中 x 为正数时,会将x的所有位右移x位,同时左边高位补0

显而易见,运算结束后,值为1 。

可知右移n位,结果就是 x / 2^n:7 / 2 ^2

= 1;

也同理x<<n 会将x的所有位左移x位,右边地位补0,

其运算结果为 x*(2^n)。

负数位移

当负数在进行左移运算时,运算方式没有

改变

左移几位,就乘上几个2

-2 << 2= -8

逻辑位移和算数位移

当x是有符号整型的负数时,位移运算的结果因编译器的差异会有所改变。

在所有编译器中,会执行逻辑位移和算术位移

逻辑位移

逻辑位移不考虑符号位,包括所有符号位进行一起位移,以0来填补空白

可知,负整数位移过程中:

符号位由1变为0,位移的结果为0或正整数

其结果只能通过 二进制 转十进制 进行运算 。

算术位移

算术位移保留最高位的符号位,并用位移前的符号位来填补空白

以图为例:

位移前后符号不变
位移后的绝对值值为原来的绝对值的 1/2^2=1/4

结语

当进行负数位移时,无论采用哪种位移方式都会降低程序的可移植性,

所以我们要记住不要对负数进行位移。

相关文章
|
7月前
|
算法 Java
Java数据结构与算法:位运算之位移操作
Java数据结构与算法:位运算之位移操作
|
8月前
|
数据安全/隐私保护
加速度、速度、位移互相转换,加速度转位移matlab程序,任意数据类型
地震波格式转换、时程转换、峰值调整、规范反应谱、计算反应谱、计算持时、生成人工波、时频域转换、数据滤波、基线校正、Arias截波、傅里叶变换、耐震时程曲线、脉冲波合成与提取、三联反应谱、地震动参数、延性反应谱、地震波缩尺、功率谱密度
|
8月前
两个整数做除法,有时会产生循环小数,其循环部分称为:循环节。 比如,11/13=6=>0.846153846153… 其循环节为[846153] 共有6位。
两个整数做除法,有时会产生循环小数,其循环部分称为:循环节。 比如,11/13=6=>0.846153846153… 其循环节为[846153] 共有6位。
|
算法 测试技术 C#
C++二分查找算法的应用:将数据流变为多个不相交区间
C++二分查找算法的应用:将数据流变为多个不相交区间
|
算法 测试技术 C++
C++算法:最少翻转操作数
C++算法:最少翻转操作数
|
算法
怎么理解优先级翻转
怎么理解优先级翻转
125 0
|
C语言
二值逻辑变量与基本逻辑运算
二值逻辑变量与基本逻辑运算
157 0
|
C语言 Python
左移(<<),右移(>>), (i++ 如果没有接收方,那么“先使用”,如何理解?),取余和取模一样吗?
左移(<<),右移(>>), (i++ 如果没有接收方,那么“先使用”,如何理解?),取余和取模一样吗?
算数右移和逻辑右移的区别及逻辑运算的窍门
算数右移和逻辑右移的区别及逻辑运算的窍门
913 0
labview程序结构for循环while循环n层叠平铺定时顺序结构求和总和平方和根
labview程序结构for循环while循环n层叠平铺定时顺序结构求和总和平方和根
274 0

热门文章

最新文章