【逻辑位移和算数位移】

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

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

正数位移

当 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

结语

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

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

相关文章
|
29天前
|
算法框架/工具
第4章-变换-4.2-特殊矩阵变换和运算
第4章-变换-4.2-特殊矩阵变换和运算
10 0
|
4月前
|
数据安全/隐私保护
加速度、速度、位移互相转换,加速度转位移matlab程序,任意数据类型
地震波格式转换、时程转换、峰值调整、规范反应谱、计算反应谱、计算持时、生成人工波、时频域转换、数据滤波、基线校正、Arias截波、傅里叶变换、耐震时程曲线、脉冲波合成与提取、三联反应谱、地震动参数、延性反应谱、地震波缩尺、功率谱密度
|
4月前
|
C语言
C语言自增减、逻辑运算、位运算、位移运算及三目运算操作
C语言自增减、逻辑运算、位运算、位移运算及三目运算操作
41 0
|
11月前
加减运算电路的介绍
加减运算电路 引言: 加减运算电路是计算机中常见的一种电路,它能够对数字进行加法和减法运算。本文将介绍加减运算电路的原理、设计和应用。 一、加法运算电路 加法运算电路是实现数字加法的关键部分。它能够将两个二进制数相加,并输出它们的和。 1. 半加器 半加器是加法运算电路的基本单元。它能够对两个二进制位进行加法运算,并输出它们的和与进位。半加器的逻辑电路图如下: (图1:半加器逻辑电路图) 半加器的真值表如下: (表1:半加器真值表) 从真值表可以看出,半加器的和输出位等于两个输入位的异或运算结果,进位输出位等于两个输入位的与运算结果。 2. 全加器 全加器是由两个半加器组成的加
259 0
|
11月前
|
算法 测试技术 C++
C++算法:最少翻转操作数
C++算法:最少翻转操作数
|
C语言
二值逻辑变量与基本逻辑运算
二值逻辑变量与基本逻辑运算
128 0
|
C语言 Python
左移(<<),右移(>>), (i++ 如果没有接收方,那么“先使用”,如何理解?),取余和取模一样吗?
左移(<<),右移(>>), (i++ 如果没有接收方,那么“先使用”,如何理解?),取余和取模一样吗?
算数右移和逻辑右移的区别及逻辑运算的窍门
算数右移和逻辑右移的区别及逻辑运算的窍门
552 0
labview程序结构for循环while循环n层叠平铺定时顺序结构求和总和平方和根
labview程序结构for循环while循环n层叠平铺定时顺序结构求和总和平方和根
174 0
|
Java
位移运算---为何负数不断地无符号向右移动的最小值是1呢?
位移运算---为何负数不断地无符号向右移动的最小值是1呢?
217 0
位移运算---为何负数不断地无符号向右移动的最小值是1呢?