zoukankan      html  css  js  c++  java
  • 9.进制

    • int num = 012;0表示的是八进制
    • int num2 = 0x12;表示的是十六进制
    • 二进制转化成八进制,从右向左,每3个一组,不足3位左补0,转换成八进制
    • 八进制转换为二进制,用3位二进制数代替每一位八进制数

    以下代码实现了,十进制到二进制,二进制到十进制,二进制到八进制

      1 #include<stdio.h>
      2 #include<stdlib.h>
      3 #include <math.h>
      4 #include <iostream>
      5 #include <limits.h>
      6 using namespace std;
      7 //此方法不好,因为如果把二进制存放在int类型中最多只能存放八个二进制,可能会造成溢出
      8 //int toBinary(int num)
      9 //{
     10 //    int res = 0;
     11 //    int mul = 1;
     12 //    while (num != 0)
     13 //    {
     14 //        res += num % 2 * mul;
     15 //        mul *= 10;
     16 //        num /= 2;
     17 //    }
     18 //
     19 //    return res;
     20 //}
     21 
     22 //把二进制存放在字符数组中的方法实现十进制转化为二进制
     23 char *ten_to_binary(int num)
     24 {
     25     int len = 1;
     26     int temp = num;
     27     while (temp / 2 != 0)
     28     {
     29         len++;
     30         temp /= 2;
     31     }
     32 
     33     char *res = (char *)malloc(len+1);
     34 
     35     res[len] = '';
     36     while (num != 0)
     37     {
     38         res[--len] = '0' + num % 2;
     39         num /= 2;
     40     }
     41 
     42     return res;
     43 
     44 }
     45 
     46 //二进制转为十进制
     47 long long int binary_to_ten(char *binary)
     48 {
     49     long long int res = 0;
     50     int len = strlen(binary);
     51     for (int i = 0; i <len; i++)
     52     {
     53         res += (binary[i] - '0')*pow(2, len - i - 1);
     54     }
     55 
     56     return res;
     57 }
     58 
     59 //二进制转为八进制
     60 long long int b_to_eight(char *binary)
     61 {
     62     long long int res = 0;
     63     int lastCount;//用于最后三位的次方
     64     int len = strlen(binary);
     65 
     66     //如果是三的倍数,则三个三个分组,结果加到res中
     67     if (len % 3 == 0)
     68     {
     69         char temp[4] = { 0 };
     70         int count = len / 3;
     71         for (int i = 0; i < count; i++)
     72         {
     73             temp[0] = binary[len - i * 3 - 3];
     74             temp[1] = binary[len - i * 3 - 2];
     75             temp[2] = binary[len - i * 3 - 1];
     76             res += binary_to_ten(temp)*pow(10, i);
     77         }
     78     }
     79     else//如果不能被3整除,先算可以被3位划分的
     80     {
     81         char temp[4] = { 0 };
     82         int count = len / 3;
     83         for (int i = 0; i < count; i++)
     84         {
     85             temp[0] = binary[len - i * 3 - 3];
     86             temp[1] = binary[len - i * 3 - 2];
     87             temp[2] = binary[len - i * 3 - 1];
     88             res += binary_to_ten(temp)*pow(10, i);
     89             lastCount = i+1;
     90         }
     91 
     92         //还剩下多少位,放入temp中,进行计算
     93         int left = len % 3;
     94         memset(temp, 0, 4);
     95         for (int i = 0; i < left; i++)
     96         {
     97             temp[2 - i] = binary[len - 3 * count - i-1];
     98         }
     99         for (int i = 0; i < 3 - left; i++)
    100         {
    101             temp[i] = '0';
    102         }
    103         res += binary_to_ten(temp)*pow(10, lastCount);
    104     }
    105 
    106     return res;
    107 }
    108 
    109 void main()
    110 {
    111     int a;
    112     _asm
    113     {
    114         mov eax,19
    115         add eax,19
    116         mov a,eax
    117     }
    118     
    119     //printf("二进制数为:%s", ten_to_binary(78979845));
    120     //printf("八进制数为%d
    ",b_to_eight("11111111111111111111111111111"));
    121     std::cout << b_to_eight("1111111111111111") << endl;
    122     std::cout << binary_to_ten("11111111111111111111111111111111");
    123     system("pause");
    124 
    125 }
    View Code
  • 相关阅读:
    mybatis(八)手写简易版mybatis
    mybaits(七)spring整合mybaits
    Java学习之String StringBuffer StringBuilder区别
    Java学习之基本概念
    java多态
    HashMap变成线程安全方法
    java高级开发工程师面试题
    同步和异步
    Oracle创建索引的原则(转)
    导入maven工程错误
  • 原文地址:https://www.cnblogs.com/xiaochi/p/8093168.html
Copyright © 2011-2022 走看看