C语言如何获取左移和右移后,移出的数据出的数据?

比如说0xAA=10101010
左移一次,移出1
再左移一次,移出0
若根据0 1做判断,怎么获取这个0 1?
也就像是汇编语言中的CY位

第1个回答  2011-08-27
以左移为例:
if ((x &1000 0000) == 0)
移出0;
else
移出1;
操作 x<<1;追问

我的意思是,已经左移或者右移完了
怎样判断已经移出的数据是0还是1

追答

1.你可以按照别人说的写试试!c中嵌入汇编,不过功能有限。
2.在之后判断可能不准确!为什么一定要在之后判断呢。在运算之前判断是最好的。

本回答被提问者采纳
第2个回答  2015-10-31
1、以左移为例:
if ((x &1000 0000) == 0)
移出0;
else
移出1;
操作 x<<1;

2、左移右移的操作方法:
1)C语言的左移和右移是以二进制数据为基准的
2)左移和右移的符号:左移的符号"<<";右移的符号">>"
3)无论左移还是右移,要移位的数据都在左边,符号右边是要移动的位数(例如移动3位)
4)右移是把该数据的二进制数全部右移N位,数据高位补零,左移则和右移相反。
5)右移举例--例如将5右移一位:5 >> 1(符号左边是被移位的数据,符号右边是要移位的位数)
将5转换为二进制为0B00000101 ,右移后的结果是:0B00000010
第3个回答  2011-08-27
用inline汇编,查看CF
第4个回答  2011-08-27
你可以直接逐位进行判断啊。追问

如果其他的运算占用了CY位,那怎么才能正确判断出
CY位就是左移或者右移出的呢?

追答

我的意思是,在移位操作前,先对目标位进行读取判断。
或者,可以考虑在C代码中嵌一段汇编,这是很常见的。

C语言如何获取左移和右移后,移出的数据出的数据?
if ((x &1000 0000) == 0)移出0;else 移出1;操作 x<<1;

C++中左移和右移位具体的步骤是怎么回事?
这是语言内部实现的。不过总之就是将数的对应二进制左移或者右移,移了以后空出的补零 例如int i = 5的二进制是 00000101 i>>2 右移两位--> 00000001 (左边空出的补零)i<<2 左移两位--> 00010100 (右边空出的补零)不知楼主发现没有,右移一位就相当于将原来的数除以2,左移就相当于将...

顺序表的循环移位(C++或者C语言)
{ printf("\\n请输入指令(向左移动:0;向右移动:1):");scanf("%d",&bool_);printf("请输入移动的格数:");scanf("%d",&n);if(bool_)right(ar,length,n);else left(ar,length,n);for(i=0;i<length;i++)ar[i]=b[i];} return 0;} int right( int * ar,int length,int ...

C语言里,变量的左移与右移的移出位是0是1应该如何辨别?用什么方式辨 ...
方法是先判断,后移位 比如x是char类型的 要左移,那么:判断(x & 0x80),然后再x<<1 要右移,那么:判断(x & 0x01),然后再x>>1

C语言和单片机中的左移右移
j=0x01; \/\/ j初始化为0x01,左移初始值 for(i=0;i<8;i++) \/\/ for循环语句,完成8个循环 { P1= ~ j; \/\/ 对变量j 中的值按位取反后,从P1口输出 delay02s( ); \/\/ 延时0.2s j= j<<1; \/\/ 左移1位 } j=0x80; \/\/ 设置右移初始值j为0x80 for (i=0;i<8;i...

C语言中的循环移位计算?
因为是按8进制输入的,8进制的24换成10进制就是20,换成2进制就是00010100(以1字节表示)。而00010100循环右移2位后就是00000101,即10进制的5,而5按8进制输出(输出格式为%o),就是5。00010100循环左移2位后是01010000,用10进制表示就是80,而80按8进制输出(输出格式为%o),就是120。

c语言右移和左移是怎样转换的?
右移一位相当于除以2。例:5>>1 5的二进制表示是101,那么右移一位之后是10就是2了,是整除的;左移的话就是在后面补一个零,相当于是乘以二,那么变成了1010,十进制是10。101右移,就是把最后一位拿掉了,是10这个是二进制的,十进是2,5\/2本来是小数,但这里是整数操作的,所以把小数...

如何用c语言实现循环左移
循环左移时,用从左边移出的位填充字的右端,而循环右移时,用从右边移出的位填充字的左侧。这种情况在系统程序中时有使用,在一些控制程序中用得也不少。设有数据说明:a=01111011,循环左移2位 正确结果: 11101101 过程:b=a>>(8-2) 用来得到正常左移丢失的位和循环移位后其正确位置 b=...

C语言中>>和<<如何使用?
在C语言中,位移运算符<>扮演着重要的角色,它们分别用于数据的左移和右移操作。位移运算符是基于二进制数的,通过调整位数来实现数据的扩展和压缩。以下是这两种运算符的详细解释:左移运算符<<,它将一个数的二进制位全部左移指定的位数,右操作数必须是非负。例如,无符号短整型变量a的值为0111(...

c语言中的位移运算是怎样执行的啊,最好有例子...
超过部分会丢弃 比如char x = 126, 是8位的,11111110 左移2位,补2个零,11 1111 1000,本来8位,会丢弃超出的2位 得到 11111000 右移,是右面部分丢弃一些位,左面补零 比如char x = 126, 是8位的,11111110 右移2位,丢弃2位, 111111,本来8位,少2位,补零得到 00111111 ...

相似回答