下面是lab2中的问题:
用位运算实现十进制转换为二进制。
#include#include using namespace std; int main() { unsigned short number; cout << "请输入一个小于65536的正整数" << endl; cin >> number; for (int i = 30; i >= 0; i--) { if (number >> i & 1) printf("1"); else printf("0"); } cout << endl; return 0; }
下面是问题的变化:将转化的二进制数前面无意义的0省略。
#include#include using namespace std; int main() { unsigned short number; cout << "请输入一个小于65536的正整数" << endl; cin >> number; int flag = 0; for (int i = 30; i >= 0; i--) { if (number >> i & 1) { if (flag == 0) { flag = 1; } printf("1"); } else { if (flag == 1) { printf("0"); } } } cout << endl; return 0; }
还有第二种变化:将二进制数中所有的1移到后面,就是
原先:0100 1111 0000 0000 0110 1111 0000 0010
移动后:0000 0000 0000 0000 0000 1111 1111 1111
#include#include using namespace std; int main() { unsigned short number; int p = 0; cout << "请输入一个小于65536的正整数" << endl; cin >> number; int i, j; for (i = 30; i >= 0; i--) { if (number >> i & 1) { printf("1"); p++; } else printf("0"); } printf("n"); for(j=0;j<31-p;j++){ printf("0"); } for (i = 0; i < p; i++) { printf("1"); } cout << endl; return 0; }
关于数组和指针
int arr[] = { 0x12345678, 0xabcdef98 };
short* pc = (short*)&arr[0];
pc++;
*pc++;
(*pc)++;
在pc++,pc++和(pc)++以后,arr、pc、*pc、&pc的值(或者是地址)分别有什么变化?
最后就是字符型指针变量与字符数组的区别了。



