所在位置:主页 > 数据处理 > 如何把十进制数转换为二进制数

如何把十进制数转换为二进制数

发布时间:2023-10-26 16:56来源:www.sf1369.com作者:宇宇

一、如何把十进制数转换为二进制数

答案:将十进制数转换为二进制数的方法是将该数不断除以2,直到商为0为止,然后将每次的余数倒序排列即可得到二进制数。

解释:

将十进制数转换为二进制数的过程可以通过以下步骤进行:

1. 将十进制数不断除以2,直到商为0为止,记录每次的余数。

2. 将每次的余姿团数倒序排列,得到的就是该十进制数对应的二进制数。

例如,将或蠢十进制数13转换为二进制数的过程如下:

13 ÷ 2 = 6 ... 1

6 ÷ 2 = 3 ... 0

3 ÷ 2 = 1 ... 1

1 ÷ 2 = 0 ... 1

将每次的余数倒序排列,得到的二进制数为1101。

拓展内容:

除了十进制和二进制,还有其他数字表示方法,如八进制、十六进制等。不同进制之间可以相互转换,例如可以将二进制转换为十进制或十六进制。在计算机编程和数据处理中,不同进制的使用具有不同的优缺点,需要根据迹团橘具体情况进行选择。了解不同进制的基本原理和转换方法,可以帮助我们更好地理解计算机中的数字表示和运算。

十进制转二进制的方法:

假设十进制为12:

12/2=6……0

6/2=3……0

3/2=1……1

1/2=0……1

将余数逆向排序,就得1100(二进制)。

   2.  C语言代码:

#include <stdio.h>

#include <stdlib.h>

int main()

{

    int a,b;

    scanf(%d,&a);

    if(a>=16)

    {

        b+=10000;

    型芦    a-=16;

    }

    if(a>=8)

    {

        b+=1000;

        a-=8;

    }

    if(a>=4)

    {

        b+=100;

        a-=4;

  猛散  }

    if(a>=2)

    {

        b+=10;

        a-=2;

    }

    b+=a;

    printf(%d,b);

    system(pause);

    return 0;

}

//只能转换卜知带1-31的数(十进制数)

二、计算机内部数据加工处理和传送的形式是几进制

二老辩郑进制。根据查询51CTO博客信息显示,计算机侍颂内部数据加工处理和传送的形式是灶坦二进制,具有可行性、简易性、逻辑性、可靠性的特点。二进制是在数学和数字电路中指以2为基数的记数系统,是以2为基数代表系统的二进位制。

三、二进制数据中的同或运算以及它的特殊用途?

◆ 同或运算

布尔表达式为:

____ _ _

F=A⊙B= A⊕B =AB十 A B

符号“⊙”表示同或运算,即两个输入变量值相同时F=1。

工程应用中,同或运算用顷渣烂同或门电路来实现,它等雀漏价于异或门输出加非门。

思考题:你能写出同或运算的真值表吗?

小结:在基本逻辑运算中,与、或、非三种运算是最本质的,其他逻辑运算是其中两种或三种的组梁燃合。

四、用C++做一个16进制数的类,包括用STRING存放数据,四则运算。请大家帮忙

保存16进制数据不需要用字符串

计算机本身保存数据就是16进制

下面是我写的 16 进制新数据链肆类

#include <iostream>

#include <iomanip.h>

using namespace std;

class HEX{

private:

unsigned int data;

public:

HEX(){data=0;}; //无参构造函数

HEX(unsigned int d){data=d;}; //无符号整形 数构造函数

HEX(const char * s){set(s);};//16 进制字符串 构造函数

//以下是运算符的重载 这样 HEX 就像普通的 c++ 数据类型一样运算

HEX & operator ++(){++data; return *this;}; // ++hex

HEX & operator --(){--data; return *this;}; // --hex

HEX operator ++(int){HEX c(data);data++;return c;}; //hex++

HEX operator --(int){HEX c(data);data--;return c;}; //hex--

HEX operator *(HEX h){HEX c(data*h.data); return c;}; //hex1*hex2

HEX operator *(unsigned int n){HEX c(data*n); return c;}; hex*uc

HEX operator /(HEX h){HEX c(data/h.data); return c;};//hex1/hex2

HEX operator /棚衫轿(unsigned int n){HEX c(data/n); return c;};//hex/uc

HEX operator %(HEX h){HEX c(data%h.data); return c;};//hex1%hex2

HEX operator %(unsigned int n){HEX c(data%n); return c;};//hex%uc

HEX operator + (HEX h){HEX c(data+h.data);return c;};//hex1+hex2

HEX operator + (unsigned int n){HEX c(data+n);return c;};//hex+uc

HEX operator - (HEX h){HEX c(data-h.data);return c;};//hex1-hex2

HEX operator - (unsigned int n){HEX c(data-n);return c;};//hex-uc

HEX & operator = (HEX h){data=h.data;return *this;};//hex1=hex2

HEX & operator = (unsigned int n){data=n;return *this;};//hex=uc

//其他运算符可以类似地塌斗实现

// 位操作 ~ ^ & |

// 比较 > < == >= <= <>

// uc + hex , uc - hex, uc * hex 等用友元函数

//下面是输入输出操作重载 , 可以方便地使用提取>> 和 插入 << 运算符输入输出 HEX 数据

friend ostream & operator << (ostream & out,HEX h){

out.width(8);out.fill('0');

out<<std::hex<<h.data;

out.fill(' ');

return out;

};

friend istream & operator >> (istream & in,HEX h){

in>>h.data;

return in;

};

//设置和取数据成员函数

unsigned int getdata(){return data;};

unsigned int set(const char * str);

unsigned int set(unsigned int d){data=d;};

//可以增加你需要实现的任何成员 或 友元函数

};

unsigned int isHexStr(const char * str){ //测试是否16进制串

int i=0;

while(str[i] && (str[i]==' ' || str[i]=='\t'))i++;

if(str[i++]!='0')return 0;

if((str[i]!='X') && (str[i] != 'x'))return 0;

i++;int t=0;

while( str[i] &&

('0'<=str[i] && str[i]<='9') ||

('A'<=str[i] && str[i]<='F') ||

('a'<=str[i] && str[i]<='f')){

i++;t++;

}

return t;

};

unsigned int HEX::set(const char * str){ //16 进制字符串 设置函数

int is=isHexStr(str);

cout<<is<<endl;

if(!is) {data=0;return 0;};

int i=0;

while(str[i] && (str[i]==' ' || str[i]=='\t'))i++;

while(str[i]=='0')i++;

i++;

int t=0;

data=0;

while( str[i] &&( //16进制串转换成数据

('0'<=str[i] && str[i]<='9') ||

('A'<=str[i] && str[i]<='F') ||

('a'<=str[i] && str[i]<='f'))){

if('0'<=str[i] && str[i]<='9'){

data=data*16+(str[i]-'0');

}

if('A'<=str[i] && str[i]<='F'){

data=data*16+(str[i]-'A'+10);

}

if('a'<=str[i] && str[i]<='f'){

data=data*16+(str[i]-'a'+10);

}

i++;t++;

if(t==8)break;

}

return data;

}

int main()

{

HEX hx(0x00F61234); //调用 HEX::HEX(unsigned int)

cout<<cout << <<hx<<endl; //插入运算符

printf(printf %08x \n,hx.getdata());//对比

hx.set(0xfdac45);//数据设置

cout<<hx<<endl;

HEX hex2(0xbcda657);//16进制串初始化构造函数

cout<<hex2<<endl;

cout <<hx+hex2<<endl; // hex+hex

cout<< ++hx<<endl; //增量运算符

cout<<(hex2/0x10000)*0x10000+hx%0x10000<<endl;//复合算式

}

首先字符串处理

然后charactor 到digit的conversion

然后computing