C语言中十进制和二进制怎么转换

小弟初学C语言,遇到了一个小小问题,上来希望各位大哥大姐多多指教指教。就是在考试二级教程C语言2011版中,在讲整数的时候,其中提到二进制数10000101为十进制数-5,这是怎么回事,怎么转换的?还有提到“short类型的最大正整数是:0111111111111111,它的值为32767”这又是怎么回事,怎么转换的?能不能麻烦说一下二进制、八进制、十进制、十六进制它们是怎么转换的?麻烦各位了,说的好加分,多谢多谢,恳求恳求了。

第1个回答  2013-08-05
10000101 对于这个来说 一般 最高位 为 符号位 0为+, 1为- 所以为 -5;short类型占2个字节,也就是 16位, 最大值为0111 1111 1111 1111。 进制之间的 转换,比如 10进制92 转换成 2进制,92/2 = 46 余数是 0,46/2 = 23 余数是 0,23/2 = 11 余数是 1, 11/2 = 5, 余数是1, 5/2 = 2,余数是 1, 2/2 = 1, 余数是 0, 所以2进制为 0111100(这里面的余数是从后往前计的)。
第2个回答  2021-01-16

计算机 十进制和二进制的转换

第3个回答  2013-08-05
二进制数第0位的权值是2的0次方,第1位的权值是2的1次方…
所以,设有一个二进制数:01101,转换为10进制为:
01101换算成 十进制
第0位 0 * 2的0方=0
第1位 0 * 2的1方=0
第2位 1 * 2的2方=4
第3位 0 * 2的3方=0
第4位 0 * 2的4方=0
第5位 1*2的5方=32
+
=36
第4个回答  2013-08-05
计算机中常用的数的进制主要有:二进制、八进制、十六进制,学习计算机要对其有所了解。
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 三、二进制转换十六进制
十六进制换二进制的方法也类似,只要每组4位,分别对应8、4、2、1就行了,如分解为:
0101 1011 1011
运算为:
0101 = 4+1 = 5
1011 = 8+2+1 = 11(由于10为A,所以11即B)
1011 = 8+2+1 = 11(由于10为A,所以11即B)
结果为:5BB 四、二进制数转换为十进制数
二进制数第0位的权值是2的0次方,第1位的权值是2的1次方……
所以,设有一个二进制数:0110 0100,转换为10进制为:
计算: 0 * 20 + 0 * 21 + 1 * 22 + 0 * 23 + 0 * 24 + 1 * 25 + 1 * 26 + 0 * 27 = 100 五、八进制数转换为十进制数
八进制就是逢8进1。
八进制数采用 0~7这八数来表达一个数。
八进制数第0位的权值为8的0次方,第1位权值为8的1次方,第2位权值为8的2次方……
所以,设有一个八进制数:1507,转换为十进制为:
计算: 7 * 80 + 0 * 81 + 5 * 82 + 1 * 83 = 839
结果是,八进制数 1507 转换成十进制数为 839 六、十六进制转换十进制
例:2AF5换算成10进制
直接计算就是: 5 * 160 + F * 161 + A * 162 + 2 * 163 = 10997
(别忘了,在上面的计算中,A表示10,而F表示15)、 现在可以看出,所有进制换算成10进制,关键在于各自的权值不同。
假设有人问你,十进数 1234 为什么是 一千二百三十四?你尽可以给他这么一个算式: 1234 = 1 * 103 + 2 * 102 + 3 * 101 + 4 * 100 十进制与二进制转换之相互算法
十进制转二进制: 用2辗转相除至结果为1 将余数和最后的1从下向上倒序写 就是结果 例如302 302/2 = 151 余0 151/2 = 75 余1 75/2 = 37 余1 37/2 = 18 余1 18/2 = 9 余0 9/2 = 4 余1 4/2 = 2 余0 2/2 = 1 余0 故二进制为100101110 二进制转十进制 从最后一位开始算,依次列为第0、1、2...位 第n位的数(0或1)乘以2的n次方 得到的结果相加就是答案 例如:01101011.转十进制: 第0位:1乘2的0次方=1 1乘2的1次方=2 0乘2的2次方=0 1乘2的3次方=8 0乘2的4次方=0 1乘2的5次方=32 1乘2的6次方=64 0乘2的7次方=0 然后:1+2+0 +8+0+32+64+0=107. 二进制01101011=十进制107. 一、二进制数转换成十进制数 由二进制数转换成十进制数的基本做法是,把二进制数首先写成加权系数展开式,然后按十进制加法规则求和。这种做法称为"按权相加"法。 二、十进制数转换为二进制数 十进制数转换为二进制数时,由于整数和小数的转换方法不同,所以先将十进制数的整数部分和小数部分分别转换后,再加以合并。 1. 十进制整数转换为二进制整数 十进制整数转换为二进制整数采用"除2取余,逆序排列"法。具体做法是:用2去除十进制整数,可以得到一个商和余数;再用2去除商,又会得到一个商和余数,如此进行,直到商为零时为止,然后把先得到的余数作为二进制数的低位有效位,后得到的余数作为二进制数的高位有效位,依次排列起来。 2.十进制小数转换为二进制小数 十进制小数转换成二进制小数采用"乘2取整,顺序排列"法。具体做法是:用2乘十进制小数,可以得到积,将积的整数部分取出,再用2乘余下的小数部分,又得到一个积,再将积的整数部分取出,如此进行,直到积中的小数部分为零,或者达到所要求的精度为止。 然后把取出的整数部分按顺序排列起来,先取的整数作为二进制小数的高位有效位,后取的整数作为低位有效位。 1.二进制与十进制的转换 (1)二进制转十进制<BR>方法:"按权展开求和" 例: (1011.01)2 =(1×23+0×22+1×21+1×20+0×2-1+1×2-2)10 =(8+0+2+1+0+0.25)10 =(11.25)10 (2)十进制转二进制 · 十进制整数转二进制数:"除以2取余,逆序输出" 例: (89)10=(1011001)2 2 89 2 44 …… 1 2 22 …… 0 2 11 …… 0 2 5 …… 1 2 2 …… 1 2 1 …… 0 0 …… 1 · 十进制小数转二进制数:"乘以2取整,顺序输出" 例: (0.625)10= (0.101)2 0.625 X 2 1.25 X 2 0.5 X 2 1.0 2.八进制与二进制的转换 例:将八进制的37.416转换成二进制数: 37 . 4 1 6 011 111 .100 001 110 即:(37.416)8 =(11111.10000111)2 例:将二进制的10110.0011 转换成八进制: 0 1 0 1 1 0 . 0 0 1 1 0 0 2 6 . 1 4 即:(10110.011)2 =(26.14)8 3.十六进制与二进制的转换<BR>例:将十六进制数5DF.9 转换成二进制: 5 D F . 9 0101 1101 1111.1001 即:(5DF.9)16 =(10111011111.1001)2 例:将二进制数1100001.111 转换成十六进制: 0110 0001 . 1110 6 1 . E 即:(1100001.111)2 =(61.E)16 本文来自CSDN博客,转载请标明出处: http://blog.csdn.net/yunyuehu/archive/2010/03/22/5404041.aspx

C语言-二进制、八进制、十进制、十六进制相互转换
十进制转二进制(小数部分):使用乘2取整方法,倒序取精度至8位。如0.66的小数部分表示为0.10101000。二进制转十进制(整数部分):依次乘以2的n次方,求和得到结果。例如,01000010表示的十进制数为66。二进制转十进制(小数部分):依次乘以2的-n次方,求和得到结果。例如,0.10101000表示的十进制数...

c语言实现十进制转换二进制
思路:十进制整数转换为二进制整数采用"除2取余,逆序排列"法。具体做法是:用2整除十进制整数,可以得到一个商和余数;再用2去除商,又会得到一个商和余数,如此进行,直到商为0时为止,然后把先得到的余数作为二进制数的低位有效位,后得到的余数作为二进制数的高位有效位,依次排列起来。参考代码:...

如何用c语言编写二进制和十进制之间的转换
二进制转十进制 n 为输入的二进制数,d用来处理该数。k为标志位,当k为1时表示输入的数有问题,需要重新输入。i为每次分解的个位数;j为二进制的权值;m为累计的十进制和;p为输入的数的位数,超过10时,该数越界,需要重新输入,定k=1。程序如下:include <conio.h> main(){ long int n,d...

C语言中十进制和二进制怎么转换
所以,设有一个二进制数:01101,转换为10进制为:01101换算成 十进制 第0位 0 2的0方=0 第1位 0 2的1方=0 第2位 1 2的2方=4 第3位 0 2的3方=0 第4位 0 2的4方=0 第5位 1*2的5方=32 + =36

C语言 怎样将二进制数转换成十进制,又怎样将十进制数转换成二进制数输出...
将十进制数转换成二进制数,采用的原理就是辗转除2,逆向输出余数。(windows系统下的itoa函数也是一个不错的选择,但DIY更有意义)实现方法:include <stdio.h>void swap( char *a, char *b ){char t=*a;*a=*b;*b=t;}char *reverse(char *s,int len){char *b=s, *e=s+len-1;...

C语言中十进制和二进制怎么转换
1111 1111 1111。 进制之间的 转换,比如 10进制92 转换成 2进制,92\/2 = 46 余数是 0,46\/2 = 23 余数是 0,23\/2 = 11 余数是 1, 11\/2 = 5, 余数是1, 5\/2 = 2,余数是 1, 2\/2 = 1, 余数是 0, 所以2进制为 0111100(这里面的余数是从后往前计的)。

用C语言编写,输入一个十进制并转换成二进制
可以通过C语言编写一个程序,将输入的十进制数转换为二进制数。首先,我们需要了解十进制和二进制之间的转换原理。十进制是我们日常生活中常用的数值表示方法,每一位上的数码都是0~9之间的数字。而二进制则只有0和1两个数码。要将十进制转换为二进制,可以采用“除2取余”的方法,即将十...

c语言十进制转二进制代码
c语言十进制转二进制一般来说就是指在C语言环境下,实现把十进制转换成二进制,也就是属于一种进制的转换,其原理通常是正整数转换成二进制,采用除二取余,然后倒序排列,高位补零的方式。参考范例:十进制转二进制示例代码一 include stdio.h int main(){ int i, n = 0, b[16];scanf(%d, ...

c语言编程怎么实现进制转换?
1、(1)间接法:先将十进制转换成二进制,然后将二进制又转换成八进制。(2)直接法:八进制是由二进制衍生而来的,因此可以采用与十进制转换为二进制相类似的方法,还是整数部分的转换和小数部分的转换,下面来具体讲解一下:①整数部分 方法:除8取余法,即每次将整数部分除以8,余数为该位权上的...

C语言十进制转二进制
十进制转二进制可以使用库函数itoa。itoa函数原型:char*itoa(int value,char*string,int radix);功能:将任意类型的数字转换为字符串。在<stdlib.h>中与之有相反功能的函数是atoi。nt value 被转换的整数,char *string 转换后储存的字符数组,int radix 转换进制数,如2,8,10,16 进制等。

相似回答