c语言二进制类型
⑴ c语言的二进制,八进制,十进制是什么意思
计算机中常用的数的进制主要有:二进制、八进制、十六进制,学习计算机要对其有所了解。
2进制,用两个阿拉伯数字:0、1;
8进制,用八个阿拉伯数字:0、1、2、3、4、5、6、7;
10进制,用十个阿拉伯数字:0到9;
16进制就是逢16进1,但我们只有0~9这十个数字,所以我们用A,B,C,D,E,F这五个字母来分别表示10,11,12,13,14,15。字母不区分大小写
一、二进制转换十进制
例:二进制 “1101100”
1101100 ←二进制数
6543210 ←排位方法
例如二进制换算十进制的算法:
1*26 + 1*25 + 0*24 + 1*23 + 1* 22 + 0*21 + 0*20
↑ ↑
说明:2代表进制,后面的数是次方(从右往左数,以0开始)
=64+32+0+8+4+0+0
=108
二、二进制换算八进制
例:二进制的“10110111011”
换八进制时,从右到左,三位一组,不够补0,即成了:
010 110 111 011
然后每组中的3个数分别对应4、2、1的状态,然后将为状态为1的相加,如:
010 = 2
110 = 4+2 = 6
111 = 4+2+1 = 7
011 = 2+1 = 3
结果为:2673
⑵ c语言里面 %d是十进制 %o是八进制 %x是十六进制 %多少是二进制
c语言中没有表示二进制的字符,但是你可以根据十进制、八进制或者十六进制转换一下。
可以利用短除法,将十进制转变成二进制,我们一般的思路是这样的,下面给出一个例子:
把20转换成二进制:
20/2=10........余数为0 最低位
10/2=5..........余数为0
5/2=2............余数为1
2/2=1............余数为0
1/2=0............余数为1 最高位
则20换成二进制后是10100
利用短除法可以轻松地将十进制转换成二进制,在编程中是这样用的,以下给出代码:
(2)c语言二进制类型扩展阅读:
在做数据读写传输时最常用也最直观的莫过于十进制数,但是在不同应用场合、存储的方便在C语言开发时候也常采用二进制、八进制和十六进制存储数据。
进制是一种计数机制,对于任何一种进制,如:xx进制,就表示某一位置上的数运算时逢 xx 进一位。例如:时间60′60′,分钟就会加 1,这就是六十进制。计算机中常用的进制有二进制、八进制、十进制、十六进制。
下面给出一个使用C语言编程实现任意进制数(2-16进制)转换为其他任意进制数(2-16进制)的小程序代码:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int TenNum(char a[],int B); //将输入的数字转换成10进制数
void Numchange(int m, int B); //将转换好了的10进制数转换为所需进制数
int TenNum(char a[], int B)
{
int len, i, num;
int sum = 0;
len = strlen(a); //求得字符串长度
for (i = 0; i < len; i++)
{
if (a[i] >= '0' && a[i] <= '9')
num = a[i] - '0';
else if (a[i] >= 'A' && a[i] <= 'F')
num = a[i] - 'A' + 10;
sum = sum * B + num;
}
return sum;
}
void Numchange(int m, int B)
{
int n;
if (m)
{
Numchange(m / B, B);
n = m % B;
if (n < 10)
printf("%d", n); //小于10直接输出
else
printf("%c", n + 55); //大于10转换成字符输出
}
}
int main()
{
int B, b;
char a[20];
printf("请输入待转换数的进制(2-16):");
do {
scanf_s("%d", &B);
} while (B < 2 && B > 16);
printf("请输入待转换数:");
getchar();
gets_s(a); //将输入的n进制数存放在数组a中
int m = TenNum(a, B); //将输入的数字转换成十进制数
printf("请输入需要转成几进制数(2-16):");
do {
scanf_s("%d", &b);
} while (B < 2 && B > 16);
printf("%d进制数%s转换为%d进制数的结果为:",B,a,b);
Numchange(m, b); //将十进制数转换为所需进制数
printf(" ");
system("pause");
return 0;
}
⑶ 能不能给我讲讲C语言中实数的二进制形式,是怎样存储的
1、float类型数字在计算机中用4个字节(32位)存储。
遵循IEEE-754格式标准:
一个浮点数由3部分组成:符号位s(1位)和、指数e(8位)、底数m(23位)
2、格式
SEEE EEEE EMMM MMMM MMMM MMMM MMMM MMMM
S:符号位
E:指数,十进制指数加上127后的值得二进制数据
M:底数
3、符号位
指底数的符号,可正可负。
4、指数
占用8bit的二进制数,可表示数值范围为0-255。
但是指数可正可负,所以,IEEE规定,此处算出的次方必须减去127才是真正的指数。
所以,float类型的指数可从-126到128
5、底数
实际是占用24bit的一个值,但是最高位始终为1,所以,最高位省去不存储,在存储中占23bit
科学计数法。
再举一例:
17.625在内存中的存储
首先要把17.625换算成二进制:10001.101
在将10001.101右移,直到小数点前只剩1位:
1.0001101 * 2^4 因为右移动了四位
底数:因为小数点前必为1,所以IEEE规定只记录小数点后的就好。所以,此处的底数为:0001101
指数:实际为4,必须加上127(转出的时候,减去127),所以为131。也就是10000011
符号:整数,所以是0
综上所述,17.625在内存中的存储格式是:
01000001 10001101 00000000 00000000
⑷ c语言中的数据类型及二进制 八进制 十六进制之间的转换
c语言算术表达式的计算,在计算过程中,每一步计算所得结果的数据类型由参与运算的运算对象决定,相同数据类型的两个对象运算,结果数据类型不变,不同数据类型的运算对象进行运算,结果的数据类型由高精度的运算对象决定。精度的高低:double>float>int
需要注意的是,数据类型的转换是在计算过程中逐步进行的,整个表达式结果的数据类型一定与表达式中出现的精度最高的数据相同,但是具体得到数据值是逐步得到的,例如:int
x=1,y=3;
double
k=1573.267;
x
/
y
*
k
这个表达式计算结果的数据类型是double,
计算结果的答案是
0.0
因为在第一步
x/y
的计算中
结果是一个整型数据
0
第二步计算
0
*
1573.267
结果是一个double类型的数据,但数值是0.0
也就是说,算术表达式计算结果的数据类型与运算的优先级没有关系,一定具有表达式中精度最高的数据类型,但是具体得到数据结果数值,与优先级可就有关系啦。
⑸ 怎么在C语言里面输入二进制数字
c语言不能直接表示二进制,没有数字前缀表示。
例子如下:
假设有一个
int
类型的数,值为5,那么,我们知道它在计算机中表示为:
00000000
00000000
00000000
00000101
5转换成二制是101,不过int类型的数占用4字节(32位),所以前面填了一堆0。
(5)c语言二进制类型扩展阅读
进制是一种计数的方式,常用的有二进制、八进制、十进制、十六进制。任何数据在计算机内存中都是以二进制的形式存放的。
我对进制的个人理解,二进制数是以2为计算单元,满2进1位的数;八进制数是以8为计算单元,满8进1位的数。
对于任何一个数字,我们都可以用不同的进制来表示,比如,十进制数12,用二进制表示为1100,用八进制表示为14,用十六进制表示为0xc。
⑹ c语言的二进制、八进制、十六进制之类的进制是什么意思举几个例子。
进制---即逢几进一的意思;二进制即逢二进一,八进制即逢八进一,十六进制即逢十六进一
如:十进制逢时进一,计数规则为:0、1、2、3、4、5、6、7、8、9;数到10的时候向前进1变为10、11等等
二进制是逢二进一,计数规则为0、1,该数到2时向前进1,变为10(对应十进制的2)、11(对应十进制的3)
⑺ C语言中二进制数字的前缀是什么
c语言不能直接表示二进制,没有数字前缀表示。
例子如下:
假设有一个 int 类型的数,值为5,那么,我们知道它在计算机中表示为:
00000000 00000000 00000000 00000101
5转换成二制是101,不过int类型的数占用4字节(32位),所以前面填了一堆0。
(7)c语言二进制类型扩展阅读
进制是一种计数的方式,常用的有二进制、八进制、十进制、十六进制。任何数据在计算机内存中都是以二进制的形式存放的。
我对进制的个人理解,二进制数是以2为计算单元,满2进1位的数;八进制数是以8为计算单元,满8进1位的数。
对于任何一个数字,我们都可以用不同的进制来表示,比如,十进制数12,用二进制表示为1100,用八进制表示为14,用十六进制表示为0xC。
⑻ C语言二进制怎么表示
c++中负数存储时,不是简单的将符号位置为1,而是采用补码的形式存储的,负数最高位为符号位,也就是1,其余全部取反,然后再加1。
假如操作系统是32位,-1的二进制存储不是:1000
0000 0000 0001,而是:1111 1111 1111 1110+1即1111 1111 1111 1111。
(8)c语言二进制类型扩展阅读:
C语言面向过程,与C++、Java等面向对象编程语言有所不同。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、仅产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。
C语言描述问题比汇编语言迅速、工作量小、可读性好、易于调试、修改和移植,而代码质量与汇编语言相当。