c语言之移位运算

这篇具有很好参考价值的文章主要介绍了c语言之移位运算。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

移位运算

左移

逻辑左移和算数左移的效果是一样的,高位移出,低位补0.

对于一个位长位W的数来说,左移K位。(通常来讲K<W)

高k位移出,低k位补0.

把下面这个w位的位向量左移K位。
[ X w − 1 , X w − 2 , X w − 3 , . . . , X 3 , X 2 , X 1 , X 0 ] [X_{w-1},X_{w-2},X_{w-3},...,X_3,X_2,X_1,X_0] [Xw1,Xw2,Xw3,...,X3,X2,X1,X0]

[ X w − k − 1 , X w − k − 2 , . . . , X 3 , X 2 , X 1 , X 0 , 0 , 0 , 0 , 0... , 0 , 0 , 0 ] [X_{w-k-1},X_{w-k-2},...,X_3,X_2,X_1,X_0,0,0,0,0...,0,0,0] [Xwk1,Xwk2,...,X3,X2,X1,X0,0,0,0,0...,0,0,0]

后面会有K个0.

右移

逻辑右移和算术右移

逻辑右移是低位移出,高位补0的。算数右移的高位是复制最高位的。

逻辑右移
[ X w − 1 , X w − 2 , X w − 3 , . . . , X 3 , X 2 , X 1 , X 0 ] [X_{w-1},X_{w-2},X_{w-3},...,X_3,X_2,X_1,X_0] [Xw1,Xw2,Xw3,...,X3,X2,X1,X0]

[ 0 , 0 , . . . , 0 , 0 , X w − 1 , X w − 2 , X w − 3 , . . . , X k , ] [0,0,...,0,0,X_{w-1},X_{w-2},X_{w-3},...,X_{k},] [0,0,...,0,0,Xw1,Xw2,Xw3,...,Xk,]
这里补充k个0.

算术右移
[ X w − 1 , X w − 2 , X w − 3 , . . . , X 3 , X 2 , X 1 , X 0 ] [X_{w-1},X_{w-2},X_{w-3},...,X_3,X_2,X_1,X_0] [Xw1,Xw2,Xw3,...,X3,X2,X1,X0]

[ X w − 1 , . . . , X w − 1 , X w − 1 , X w − 1 , X w − 1 , X w − 2 , X w − 3 , . . . , X k , ] [X_{w-1},...,X_{w-1},X_{w-1},X_{w-1},X_{w-1},X_{w-2},X_{w-3},...,X_{k},] [Xw1,...,Xw1,Xw1,Xw1,Xw1,Xw2,Xw3,...,Xk,]

这里补k个X_{w-1}_.

举个例子

操作
参数x [0110 0011] [1001 0101]
x<<4 [0011 0000] [0101 0000]
x>>4(逻辑右移) [0000 0110] [0000 1001]
x>>4(算术右移) [0000 0110] [1111 1001]

在c语言里对于有符号数可以是逻辑右移,但是几乎所有编译器都是算术右移,对于无符号数必须是逻辑右移的。文章来源地址https://www.toymoban.com/news/detail-401534.html

到了这里,关于c语言之移位运算的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C语言:位运算符----与(&),或(|),非(~),异或(^),左移(<<)和右移(>>)

    C语言 基础开发----目录 位运算符 就是按二进制位进行运算。 C语言中位运算符主要包括六种,具体如下: 与(),或(|),非(~),异或(^),左移()和右移() 位运算符 含义 说明 按位 与 有0为0,双1为1: 11=1,10=0,01=0,00=0 只有两者对应位都为 1 ,结果对应位才为 1 ,否则为 0 I 按

    2024年01月18日
    浏览(52)
  • c语言之移位运算

    左移 逻辑左移和算数左移的效果是一样的,高位移出,低位补0. 对于一个位长位W的数来说,左移K位。(通常来讲KW) 高k位移出,低k位补0. 把下面这个w位的位向量左移K位。 [ X w − 1 , X w − 2 , X w − 3 , . . . , X 3 , X 2 , X 1 , X 0 ] [X_{w-1},X_{w-2},X_{w-3},...,X_3,X_2,X_1,X_0] [ X w − 1 ​

    2023年04月08日
    浏览(26)
  • OpenCv 图像的算数运算

    1. 图像加法 函数 cv.add(img1, img2) 参数中的img1 和 img2 应该是相同的深度和类型, 或者第二个图像可以是像素值 代码示例: 可以注意到,如果二者的和大于最大像素值255那么opencv会将其自动置为255. 合成实例: 可以发现 add 函数就是普通的像素值相加 2.图像混合 cv.addWeighted(img

    2024年02月03日
    浏览(36)
  • 三、C++运算符(2)算数运算符

    运行结果:

    2024年01月23日
    浏览(53)
  • MATLAB基础—算数运算符

    2、所用运算符: (1)加减运算: ①、+ :即简单的 A+B 但要求A和B两个矩阵要具有相同的维度;(即两个矩阵行数和列数相同) 例如: A + B 就是简单的两个矩阵对应位置元素的相加和(A,B都是两行三列矩阵) 而 a + B 报错,因矩阵 a 为三行三列,而矩阵 B 为两行三列(行列

    2024年02月08日
    浏览(44)
  • 【微机原理】汇编指令之算数运算类指令

    格式:ADD 目的操作数,源操作数 功能:目的操作数 + 源操作数 —目的操作数 例如:ADD AL,BL;  AL + BL — AL 寄存器中 格式:ADC 目的操作数,源操作数 功能:目的操作数 + 源操作数 + CF(进位标志位) —目的操作数 例如:MOV AL,0;     0 — AH       MOV AL,92H;  92H—AL    

    2024年02月03日
    浏览(40)
  • shell中expr算数运算符使用

    expr(evaluate expressions),表达式求值 直接使用 expr 1 + 1 就能得到结果2,需要注意的是: 运算符、每个数字之间都是要有空格的,不然就是一个字符串; 使用乘号的时候要使用转义符号 * ; 四则运算中,使用了小括号(),也需要转义 ( 1 + 1 ) ; 只对整数进行运算。 还可以直接把结

    2023年04月13日
    浏览(40)
  • CUDA小白 - NPP(2) -图像处理-算数和逻辑操作(2)

    cuda小白 原始API链接 NPP GPU架构近些年也有不少的变化,具体的可以参考别的博主的介绍,都比较详细。还有一些cuda中的专有名词的含义,可以参考《详解CUDA的Context、Stream、Warp、SM、SP、Kernel、Block、Grid》 常见的NppStatus,可以看这里。 如有问题,请指出,谢谢 Logical Operati

    2024年02月11日
    浏览(33)
  • C#的几种位操作运算,与、或、非、异或、左移、右移

    C#的常见几种位操作运算,与($)、或(|)、非(~)、异或(^)、左移()、右移() 位操作一般来说比加减乘除计算要快一些 与()操作符的位都为1时,才为1,其他都为0,因此与()操作符的结果范围在[0, Math.Min(x,y)],x,y均为正整数 或(|)操作符的位都为0时,才为0,其他都为1,因此或(|)操作

    2024年02月16日
    浏览(38)
  • 《深入理解C语言中的逻辑运算符及其短路特性》

    在C语言中,除了关系运算符之外,我们还可以使用逻辑运算符。逻辑运算符主要包括与运算()、或运算(||)和非运算(!)三种。这些运算符可以用来进行复杂的条件判断,简化程序的执行流程。在进行逻辑运算时,C语言规定非0即真,0即假。本篇博客主要围绕这个特性展

    2024年02月05日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包