二进制转换器计算器代码(用c语言设计计算器实现加减乘除,十进制与二进制八进制十六进制的转换,有退出功能)

本文目录
- 用c语言设计计算器实现加减乘除,十进制与二进制八进制十六进制的转换,有退出功能
- 二进制代码的进制转换
- C#计算器中怎么写十进制,十六进制,二进制等互相转化的代码,求大神指点
- VB计算器代码十进制转二进制和十六进制的代码急!!~
用c语言设计计算器实现加减乘除,十进制与二进制八进制十六进制的转换,有退出功能
我有个VC++的 任意进制转换----栈的链接存储
/* 栈的链接存储----任意进制转换*/
#include 《iostream.h》
#include 《stdlib.h》
typedef int ElemType;
struct SNode {
ElemType data;
SNode* next;
};
void InitStack(SNode*& HS)
{
HS = NULL;
}
// 压栈 插入元素
void Push(SNode*& HS, const ElemType& item)
{
SNode* newptr = new SNode; /* 获取动态结点*/
newptr-》data = item; /*给新分配的结点赋值*/
newptr-》next = HS; /* 向栈顶压入新结点*/
HS = newptr;
}
//从栈中删除一个元素并返回该元素
ElemType Pop(SNode*& HS)
{
if(HS==NULL)
{
cerr《《"无法从空栈中删除元素,退出运行 !"《《endl;
exit(1);
}
SNode* p = HS;
HS = HS-》next;
ElemType temp = p-》data;
delete p;
return temp;
}
//读取栈顶元素
ElemType Peek(SNode* HS)
{
if(HS==NULL)
{
cerr《《"无法从空链栈中读取元素,退出运行 !"《《endl;
exit(1);
}
return HS-》data;
}
bool EmptyStack(SNode* HS)
{
return HS == NULL;
}
void ClearStack(SNode*& HS)
{
SNode *mp, *np;
mp = HS;
while(mp!=NULL)
{
np = mp-》next;
delete mp;
mp = np;
}
HS = NULL;
}
void Transform(long number, int r)
{
SNode *a;
InitStack(a);
while(number!=0)
{
int k = number%r;
Push(a,k);
number = number/r;
}
while(!EmptyStack(a))
{
if(r!=16)cout《《Pop(a);
else
{
int x = Pop(a);
if(x《10) cout《《x;
else
{
switch(x)
{
case 10: cout《《’A’; break;
case 11: cout《《’B’; break;
case 12: cout《《’C’; break;
case 13: cout《《’D’; break;
case 14: cout《《’E’; break;
case 15: cout《《’F’; break;
}
}
}
}
cout《《endl;
}
void main()
{
cout《《"请输入一个长整数(最长十位有效数字): ";
long n;
cin》》n;
cout《《"长整数 "《《n《《" 的十六进制数为: ";
Transform(n,16);
cout《《"长整数 "《《n《《" 的十进制数为: ";
Transform(n,10);
cout《《"长整数 "《《n《《" 的八进制数为: ";
Transform(n,8);
cout《《"长整数 "《《n《《" 的六进制数为: ";
Transform(n,6);
cout《《"长整数 "《《n《《" 的四进制数为: ";
Transform(n,4);
cout《《"长整数 "《《n《《" 的二进制数为: ";
Transform(n,2);
}
二进制代码的进制转换
转换为十进制
二进制数、八进制数、十六进制数转换为十进制数的规律是相同的。把二进制数(或十六进制数)按位权形式展开多项式和的形式,求其最后的和,就是其对应的十进制数——简称“按权求和”.
例1:把(1001.01)2转换为十进制数。
解:(1001.01)2
=1×23+0×22+0×21+1×20+0×2-1+1×2-2
=8+0+0+1+0+0.25
=9.25
例2.把(38A.11)16转换为十进制数
解:(38A.11)16
=3×162+8×16+10×160+1×16-1+1×16-2
=768+128+10+0.0625+0.0039
=906.0664
十进制转换为其他
一、一个十进制整数转换为二进制整数通常采用除二取余法,即用2连续除十进制数,直到商为0,逆序排列余数即可得到――简称除二取余法.
例:将25转换为二进制数
解:25÷2=12余数1
12÷2=6余数0
6÷2=3余数0
3÷2=1余数1
1÷2=0余数1
所以25=(11001)2
二、同理,把十进制数转换为八进制数、十六进制数时,将基数2转换成8和16就可以了.
例:将25转换为十六进制数
解:25÷16=1余数9
1÷16=0余数1
所以25=(19)16
交叉转换
由于2^3=8,2^4=16,所以一位八进制数所能表示的数值恰好等于三位二进制数能表示的数值,而一位十六进制数与四位二进制数能表示的数值正好相当,因此八进制、十六进制与二进制数之间的转换极为方便。
(1)十六进制数转换成二进制数,只要将每一位十六进制数用对应的4位二进制数替代即可――简称位分四位.
例:将(4AF8B)16转换为二进制数.
解: 4 A F 8 B
0100 1010 1111 1000 1011
所以(4AF8B)16=(1001010111110001011)2
(2)二进制数转换为十六进制数,分别向左,向右每四位一组,依次写出每组4位二进制数所对应的十六进制数――简称四位合一位.
例:将二进制数(111010110)2转换为十六进制数.
解: 0001 1101 0110
1 D 6
所以(111010110)2=1D6H
转换时注意最后一组不足4位时必须加0补齐4位
计算器:
Windows XP自带的计算器
注:在Windows XP自带的计算器中对表示范围进行了限制,“字节”,只能表示到十进制的255,也就是8个1,“单字”,最多可以表示16个1,“双字”,最多可表示32个1,“四字”,最多表示64个1.
C#计算器中怎么写十进制,十六进制,二进制等互相转化的代码,求大神指点
int a = 2014;
// to 16进制和二进制数组
String _Hex = Convert.ToString( a, 16 );
byte _Bytes = BitConverter.GetBytes( a );
// 再转回十进制
int _Ha = int.Parse( _Hex, System.Globalization.NumberStyles.HexNumber );
int _Ba = BitConverter.ToInt32( _Bytes, 0 );
VB计算器代码十进制转二进制和十六进制的代码急!!~
VB 二进制,八进制,十进制,十六进制转换
Public Function D_To_B(ByVal Dec As Long) As String
Do
D_To_B = Dec Mod 2 & D_To_B
Dec = Dec \ 2
Loop While Dec
End Function
Public Function B_To_D(ByVal Bin As String) As Integer
Dim i As Long
For i = 1 To Len(Bin)
B_To_D = B_To_D * 2 + Val(Mid(Bin, i, 1))
Next i
End Function
Public Function H_To_B(ByVal Hex As String) As String
Dim i As Long
Dim B As String
Hex = UCase(Hex)
For i = 1 To Len(Hex)
Select Case Mid(Hex, i, 1)
Case "0": B = B & "0000"
Case "1": B = B & "0001"
Case "2": B = B & "0010"
Case "3": B = B & "0011"
Case "4": B = B & "0100"
Case "5": B = B & "0101"
Case "6": B = B & "0110"
Case "7": B = B & "0111"
Case "8": B = B & "1000"
Case "9": B = B & "1001"
Case "A": B = B & "1010"
Case "B": B = B & "1011"
Case "C": B = B & "1100"
Case "D": B = B & "1101"
Case "E": B = B & "1110"
Case "F": B = B & "1111"
End Select
Next i
While Left(B, 1) = "0"
B = Right(B, Len(B) - 1)
Wend
H_To_B = B
End Function
Public Function B_To_H(ByVal Bin As String) As String
Dim i As Long
Dim H As String
If Len(Bin) Mod 4 《》 0 Then
Bin = String(4 - Len(Bin) Mod 4, "0" & Bin
End If
For i = 1 To Len(Bin) Step 4
Select Case Mid(Bin, i, 4)
Case "0000": H = H & "0"
Case "0001": H = H & "1"
Case "0010": H = H & "2"
Case "0011": H = H & "3"
Case "0100": H = H & "4"
Case "0101": H = H & "5"
Case "0110": H = H & "6"
Case "0111": H = H & "7"
Case "1000": H = H & "8"
Case "1001": H = H & "9"
Case "1010": H = H & "A"
Case "1011": H = H & "B"
Case "1100": H = H & "C"
Case "1101": H = H & "D"
Case "1110": H = H & "E"
Case "1111": H = H & "F"
End Select
Next i
B_To_H = H
End Function

更多文章:
二进制转换器计算器代码(用c语言设计计算器实现加减乘除,十进制与二进制八进制十六进制的转换,有退出功能)
2026年9月28日 21:20
css3动画在线制作(在网上,有在线制作FLASH动画的网站吗)
2026年9月28日 20:30
编程如何用float类型表示(c++编程中,int float等的用法~~~~~)
2026年9月28日 19:20
electronic形容词用电的(electric,electrical和electronic有何区别)
2026年9月28日 15:40
nodevideo安卓下载官网(nodevideo怎么插音乐)
2026年9月28日 13:00
判断bigdecimal是不是0(关于JAVA中BigDecimal保留前导0的问题)
2026年9月28日 10:30





