CSDN论坛 > VC/MFC > 基础类

关于移位操作 [问题点数:100分,结帖人deepool]

Bbs1
本版专家分:0
结帖率 100%
CSDN今日推荐
Bbs3
本版专家分:936
Bbs1
本版专家分:0
Bbs3
本版专家分:936
Bbs2
本版专家分:284
Bbs4
本版专家分:1019
Bbs4
本版专家分:1361
Bbs8
本版专家分:44697
Blank
铜牌 2006年9月 总版技术专家分月排行榜第三
Blank
黄花 2006年9月 VC/MFC大版内专家分月排行榜第二
2006年8月 VC/MFC大版内专家分月排行榜第二
Bbs1
本版专家分:0
Bbs6
本版专家分:6638
Bbs1
本版专家分:0
匿名用户不能发表回复!
其他相关推荐
探讨一下C语言中char类型数组的移位操作
char a[4] = {1, 2, 3, 4}; unsigned int b; b = a[0] b的结果是多少? 实际编程是0,与想的有些差距,不知道这种操作实际上如何处理?
一个移位操作引发的程序Bug
最近在开发一个有关IPV6的项目,碰到一个非常奇怪的问题,在计算IPV6的子网掩码的时候,网络前缀为8,16,48,80,112能计算正确,当网络前缀为32,64,96计算错误。这个问题花了近一天的时间定位和修改。计算IPV6子网掩码的函数如下: #include #include #define MAX_IP_SEG 4 class CIPV6Address { public:
关于C++中移位操作
C++移位操作对int型和unsigned int型数据的影响不同,具体测试如下 Linux环境,GCC编译 /************************************************************************* > File Name: test.cpp > Author: Shorey > Mail: shoreybup
C语言的移位操作符
C语言的移位操作符  位移位运算符是将数据看成二进制数,对其进行向左或向右移动若干位的运算。位移位运算符分为左移和右移两种,均为双目运算符。第一运算对象是移位对象,第二个运算对象是所移的二进制位数。  位移位运算符的运算对象、运算规则与结果、结合性如表2-16所示。  移位时,移出的位数全部丢弃,移出的空位补入的数与左移还是右移花接木有关。如果是左移,则规定补入的数全部是0
关于有符号数的移位操作
特殊对待有符号负数的移位操作。
移位指令
1、算术移位指令 SAL/SAR 格式:SAL DST , COUNT
关于移位操作的一点说明
我们有下面的测试代码: 1 #include 2 using namespace std; 3 4 5 int main() 6 { 7 int num1=7; 8 cout"num1(7)"2)endl; 9 cout"num1(7)>>2: ">2)endl; 10 int num2=-7; 11 cout"num2(-
移位操作
       (1)unsigned char x=3;  x>1是多少?  (2)char x=3;  x>1是多少?  (3)char x=-3;  x>1是多少?  3写成二进制数是00000011;-3写成二进制数是(补码)11111101。  程序执行的时候,操作的是数值的编码表示,也就是数值在内存中的二进制表示。比如说,程序取-3的时候,就去取1111110
<<移位操作
((unsign)( 0xabcd0123>>16))&0x 相当于0xabcd0123 右移位>>16 16进制移动16位 为4 个字符(因为 2进制时 8421 为, 4位能表示一个16进制位 所以是移动4位)0x=0x00 任何数字跟0异或都=0, 所以是去掉前两位的。 所以以上 等于 去掉前两位 =cd0123 再去掉后四位 =cd。
移位操作 >> << >>= <<=
1、>> unsigned char x = 3; x = x6 x = x>>1;//0000 0011 右移一位补零 0000 0001-->1 2、>>= unsigned char x = 3; x 12 x >>= 2;//0000 0011 左移一位补零 0000 0000-->0 3、char x = -3; x >>= 1;
关闭