发布时间: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。
工程应用中,同或运算用顷渣烂同或门电路来实现,它等雀漏价于异或门输出加非门。
思考题:你能写出同或运算的真值表吗?
小结:在基本逻辑运算中,与、或、非三种运算是最本质的,其他逻辑运算是其中两种或三种的组梁燃合。
保存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