2016 - 2024

感恩一路有你

c语言移位 c51实现移位的语句有哪些?

浏览量:3257 时间:2022-12-25 14:54:12 作者:采采

c语言移位 c51实现移位的语句有哪些?

c语言移位运算?

1 1ltlt5表示左移5位,结果为100,000。因为C语言从0开始计数,后五位为0。相应的8位寄存器是xx100000。(~ (1 ~(1ltlt5)),意思是左移五位再反相,结果是01111。相应的8位寄存器是xx011111。向右移动也是同样的道理。

c51实现移位的语句有哪些?

:c语言实现循环移位:

例如,a=0x45循环左移两位。a循环左移N位,即原右(8-n)位左移N位,原左N位右移N位。

实施步骤:

1.先把a的左n位放到b的高n位。

b=gtgt(8-n)

2.将A左移N位,右边高N位补0。

c=lt

3.或者B和c。

a=c|b

该过程如下:

主()

{

无符号字符a=0x45,b,c

无符号整数n=2

b=agtgt8-n)

c=备选

a=c|b

}

二:C语言实现循环移位

Keil中有这样一个库,它的头文件在C51INC目录下,它有如下操作。它不是函数,但是和函数一样,它们有入口和出口,但是没有RET语句返回。如果有这些操作,可以用反汇编窗口看到代码直接嵌入到你的代码中,效率很高。比如一个空操作,嵌入_NOP_()的代码就是一个。在该库中,有以下操作:

Unschedchar _ chkfloat _ (floatval)检查状态

返回值:0:标准浮点数

1:浮点值0

2: INF(正溢出)

3:-INF(非数字)错误状态

Unschedchar _ crol _ (//byte在多个循环中左移。

无符号字符C,//C字符向左移动

Unsigned char b)//b左移的位数

unsched char _ cror _(//字节在多个周期内右移。

无符号字符C,//C字符右移

Unsigned char b)//b左右移位的位数。

单词unsigned int _ iron _ (//)循环左移

无符号int c,//c字向左移位

无符号字符b)//b向左移动的次数

无符号int _iror_ (//word循环向右移动。

无符号int c,//c字右移

无符号字符b)//b向右移动的次数

无符号long _lrol_ (//4字节(双字)循环左移

无符号长c

左移 符号 b c a

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。