解题思路:前面刚好有一个与这个类似的题目,那个题目相当是这个题目的正数部分
一步一步移位就好了
注意事项:
看到很多人不知道0x80000000= 0b 1000 0000 0000 0000 0000 0000 0000 0000
剩下的你们就可以慢慢推了
参考代码:
#include<stdio.h>
int main()
{
int move(unsigned value, int n);
unsigned int a,b;
int n;
scanf("%u", &a);
//cin >> a;
//cin >> n;
scanf("%d", &n);
b = move(a,n);
printf("%u\n",b);
return 0;
}
int move(unsigned value, int n)
{
unsigned int temp;
if (n > 0)
for (int i = 0; i < n; i++)
{
temp = value & 1;//判断最后一位是否为1
if (temp == 1)
{
value = value >> 1;
value = value & 0x80000000;//把第一位变成1
}
else
value = value >> 1;
}
else if (n < 0)
{
for (int i = n; i < 0; i++)
{
temp = value & 0x80000000;//判断第一位是否为1
if (temp== 0x80000000)
{
value = value << 1;
value = value | 0x000000001;//把最后一位设置成1
}
else
value = value << 1;
}
}
return value;
}
0.0分
0 人评分
A+B for Input-Output Practice (III) (C++代码)浏览:863 |
C语言程序设计教程(第三版)课后习题9.4 (C语言代码)浏览:598 |
简单的a+b (C语言代码)浏览:723 |
Pascal三角 (C语言代码)浏览:1188 |
成绩转换 (C语言代码)浏览:1006 |
蛇行矩阵 (C语言代码)浏览:535 |
回文数字 (C语言代码)浏览:2510 |
C语言程序设计教程(第三版)课后习题10.2 (C语言代码)浏览:687 |
IP判断 (C语言代码)浏览:539 |
剪刀石头布 (C语言代码)浏览:1436 |