本帖最后由 1wang2huan 于 2015-9-4 20:13 编辑
- #include <stdio.h>
- int main(int argc, const char * argv[]) {
- // 定义变量存储用户输入的值
- int a;
- int binary[32];
- printf("请输入一个整数:\n");
- scanf("%d",&a);
-
- int len = sizeof(int)*8;
- // for循环让每一位和1进行与,取得每一位打印出来
- if (a >= 0) {
- // 如果输入的是正数
- for (int i=0; i<=len-1; i++) {
- if (i%8 == 0) {
- printf(" ");
- }
- printf("%d的二进制数为:",a);
- printf("%d",(a>>(len-1-i)) & 1);
-
- }
- // 如果输入的是负数
- }else{
- // 将结果存放到binary去
- for (int i=0; i<=len-1; i++) {
- binary[i] = (a>>(len-1-i)) & 1;
- }
-
- // 取反
- for (int i=1; i<=len-1; i++) {
- binary[i] = (binary[i]+1)%2;
- }
-
- //加 1
- binary[len-1] += 1;
-
- // 检查每一位不能有2
- for (int i = len-1; i >= 1; i--) {
- if (binary[i] == 2) {
- binary[i-1] += 1;
- binary[i] -= 2;
- }
- }
- printf("%d的二进制数为:",a);
-
- // 遍历打印binary
- for (int i = 0; i < len; i++) {
- if (i%8 == 0) {
- printf(" ");
- }
- printf("%d",binary[i]);
-
-
-
- }
-
-
-
-
- }
- return 0;
- }
复制代码 |
|