c语言中,有符号数位移 #include <stdio.h>intmain(void) { unsigned i=0xcffffff3;longj=0xcffffff3;intk=0xcffffff3; printf("num:\t%x\n",0xcffffff3>>2); printf("i:\t%x\n",i >>2); printf("j:\t%x\n",j >>2); printf("k:\t%x\n",k >>2); } 打印结果 sh-3.2# ./...
左移右移并不会改变原值,例如 int a = 1;a<<2;printf("%d", a); //输出还是1 如果你问的是 int a=1;a=a<<2;a=a>>2;那么最终a的值还是1 但是如果溢出了就移不回来了
Pascal中需要在16进制数前加$符号表示,C中需要在前面加0x来表示。这个以后我们会经常用到。位运算交换 储存 我们前面所说的位运算都没有涉及负数,都假设这些运算是在unsigned/word类型(只能表示正数的整型)上进行操作。但计算机如何处理有正负符号的整数类型呢?下面两个程序都是考察16位整数的储存方式(只是语言...