下面是lab2中的问题:
用位运算实现十进制转换为二进制。
#include <iostream>
#include <stdio.h>
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 <iostream>
#include <stdio.h>
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 <iostream>
#include <stdio.h>
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的值(或者是地址)分别有什么变化?
最后就是字符型指针变量与字符数组的区别了。
點(diǎn)擊查看更多內(nèi)容
為 TA 點(diǎn)贊
評(píng)論
評(píng)論
共同學(xué)習(xí),寫(xiě)下你的評(píng)論
評(píng)論加載中...
作者其他優(yōu)質(zhì)文章
正在加載中
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說(shuō)多少就多少
贊賞金額會(huì)直接到老師賬戶
支付方式
打開(kāi)微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊(cè)有機(jī)會(huì)得
100積分直接送
付費(fèi)專(zhuān)欄免費(fèi)學(xué)
大額優(yōu)惠券免費(fèi)領(lǐng)