c/c++中k<<=1什么意思啊

如题所述

机器码你应该知道吧:就是0,1序列,位移操作建立在补码的基础之上。
1.无符号位移
无符号位移:左移,高位截去,低位补零。右移,高位补零,低位截去。
举个无符号位移的例子:
假设int i=3:转换成原码:0000 0011
i<<=1则表示将以上的二进制码往左移动一位,低位补零。结果是:0000 0110即十进制的6.
所以无符号位移有结论:i<<=n 等价于 i=i*(2的n次方); i>>=n 等价于 i=i/(2的n次方)(n>=0)(暂不考虑溢出的情况)。

2.带符号位移(暂不考虑溢出的情况)
带符号位移正数和无符号位移没有区别(因为正数的补码和反码,只是在原码前加正数标识位0)。
带符号负数位移则不同(因为负数的补码是反码加一取得,反码是原码按位取反再在高位加上标识位1得到),左移是符号位不变,整体左移,低位补0,右移是符号位不变,整体右移,高位补1。
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-10-28
位移,k变量转换为二进制,高位移出,低位补零追问

可以具体点吗,谢谢。

第2个回答  2012-10-28
k变数左移1位元

c\/c++中k<<=1什么意思啊
i<<=1则表示将以上的二进制码往左移动一位,低位补零。结果是:0000 0110即十进制的6.所以无符号位移有结论:i<<=n 等价于 i=i*(2的n次方); i>>=n 等价于 i=i\/(2的n次方)(n>=0)(暂不考虑溢出的情况)。2.带符号位移(暂不考虑溢出的情况)带符号位移正数和无符号位移...

C++中的<<符号是什么意思
如果执行K<<=1;它的二进制就变成了00000010(左移了一位,超出的丢弃,不足的补0)K的值就变成了2了。

C++中<<符号什么意思
重定向,<<和>>是表示输出的方向,cout<<xxx这是定向到标准输出,而如果是ofstream file;file<<xxxx;这则表示定向到文件里面。

C++语言“k>>=1”是什么意思
>>1的意思是,将这个数看成其二进制存储方式,然后右移一位,前面补0.例如,k=8时,其二进制16bit存储为0000000000001000 k>>1后就变为0000000000000100,全部位右移一位,最低位直接舍去。实际上就是除以2

c++中1 <<k的意思
1左移k位,即2^k(2的k次方)

请教C++运算符:k >>= 1什么意思
k = k >> 1的缩写 即,将k右移一位然后赋值给k

c++中运算符<<是干什么用的?
在没有重载的情况下,操作数都是整数时,<<是位移运算。 这个例子中就是将i这个整数表示成的二进制数左移k个位置,右边补0。

c++ 中 k^=1; 什么意思??
K^=1 ,就是k = k^1 , 就是k 与1 的 异或。

关于C语言增量符号使用
这个意思就是遇到++k了,先把k的值加了1,再往后执行别的。掌握好这两点,k--和--k也是一样的道理。【第二条】、对于多个自增自减运算组合时,在不同的编译器上运行时会有不同的结果。但是在C语言里的组合顺序如gaozhen所说[“对于++ ,-- C编译系统在处理时尽可能多的(自左往右)将若干...

c++中<<的用法 比如que[0]=(r<<1); k=que[pq]>>1;
>>是左移标志,<<是右移标志,对于整形数和char类型的数来说,左移N位相当于乘上2^N,右移N位相当于除上2^N次方。举个例子来说明更深层次的意义:char本来是一个8位的二进制数 左移就相当于把char每位二进制的数向【左】边移了一格,末尾用零补齐。右移就相当于把char每位二进制的数向【...

相似回答