十进制和二进制之间的相互转化

/*
 *
 * 每一个位上对应的数字
 * ……    10        9        8        7        6    5    4    3    2    1    0    分别表示2的N次方
 * ……    1024    512        256        128        64    32    16    8    4    2    1
 *
 * 二进制转十进制
 * 100100001
 * 1    0    0    1    0    0    0    0    1
 * 256    0    0    32    0    0    0    0    1
 * 100100001=256+32+1=289 为零则表示该位上没有数字 ,个位数是1该数一定是基数.例如100100000则等于256+32=288
 *
 *
 * 十进制转二进制
 * 1659
 *
 * 1659对应的是1024,在第11位,第11位则为1,然后用1659-1024=635
 * 635对应的是512,在第10位,第10位则为1,然后用635-512=123
 * 123对应的是64,则第9,8位为0,第7位为1,然后用123-64=59
 * 59对应的是32,则第6位数字为1,然后用59-32=27
 * 27对应的是16,则第5位数字为1,然后用27-16=11
 * 11对应的是8,则第4位数字为1,然后用11-8=3
 * 3对应的是2,第3位为0,第2位则为1,然后用3-2=1
 * 1对应的是1,则第1位数字则为1
 * 最终结果是:1    1 0 0 1 1 1 1 0 1 1
 *
 *
 *
 * 负十进制数转二进制
 * java中int 是4个字节,所以高位需要补0,占够32位(例如6的二进制0110实际是00000000 00000000 00000000 00000110),最高位存放符号(0为正,1为负).
 * -659
 * 1.先将计算出659的二进制数据:00000000 00000000 000000001 010010011
 * 2.然后将计算出的二进制取反:  11111111 11111111 111111110 101101100
 * 3.然后最后一位补码,在最后一位+1:11111111 11111111 111111110 101101101(二进制逢二进一:例如二进制101+1=110)
 * -658的二进制
 * 11111111 11111111 111111110 101101110
 *
 * 负二进制数转二进制
 * 11111111 11111111 111111110 101101110
 * 1.取反 00000000 00000000 000000001 010010001
 * 2.+1  00000000 00000000 000000001 010010010
 * 3.十进制换算成二进制,然后加上负号
 */

原文地址:https://www.cnblogs.com/gavinYang/p/11196497.html

时间: 2024-07-30 13:29:50

十进制和二进制之间的相互转化的相关文章

十进制与二进制之间的相互转化

当十进制数转化为二进制数时 用除2取余法,即将十进制数辗转除2取其余数,直至结果为1 .然后将结果1及余数以从后向前的方向正确写出即为 所求二进制数(位数不足时在前方补0). 例:    95求二进制 95 / 2 = 47 / 2 = 23 /2 = 11 / 2 = 5 / 2 = 2 / 2 = 1 余数:       1          1          1            1         1          0 结果为:01011111 当二进制数转化为十进制数时 用

十进制与二进制之间的自由转换

#include <stdio.h>#include<stdlib.h>int main(){    int Type,a,b[10],i=0,c=0;    printf("请输入转换类型 1:十进制转二进制:2:二进制转十进制;\n");    scanf("%d",&Type);    printf("请输入原数据\n");    scanf("%d",&a);    switch

用python写十进制与二进制之间转换

很简单的一段,当练手 def s2e(): e = [0,0,0,0,0,0,0,0] s = int(input("请输入一个十位数:")) for i in range(0,8,1): e[i] = int(s%2) s=s//2 e.reverse() print("二进制数为:",e) def e2s(): s=[0,0,0,0,0,0,0,0] a=0 s=list(input("请输入一个二进制数:")) s.reverse() fo

Python实现十进制和二进制之间相互转换

十进制转二进制 原理:采用除2取余,逆序排列输出. 实现:用2整除十进制整数,可以得到一个商和余数:再用2去除商,又会得到一个商和余数,如此进行,直到商为小于1时为止,然后依次翻转排序即可得到二进制数,在Python中我们采”//”(地板除)的方法实现转换 # 十进制整数转二进制def decToBin(num):    arry = []   #定义一个空数组,用于存放2整除后的商    while True:        arry.append(str(num % 2))  #用列表的ap

二进制、八进制、十进制、十六进制之间转换

一. 十进制与二进制之间的转换 (1) 十进制转换为二进制,分为整数部分和小数部分 ① 整数部分 方法:除2取余法,即每次将整数部分除以2,余数为该位权上的数,而商继续除以2,余数又为上一个位权上的数,这个步骤一直持续下去,直到商为0为止,最后读数时候,从最后一个余数读起,一直到最前面的一个余数.下面举例: 例:将十进制的168转换为二进制 得出结果 将十进制的168转换为二进制,(10101000)2 分析:第一步,将168除以2,商84,余数为0. 第二步,将商84除以2,商42余数为0.

《转载》二进制、八进制、十进制、十六进制之间转换

一. 十进制与二进制之间的转换 (1) 十进制转换为二进制,分为整数部分和小数部分 ① 整数部分 方法:除2取余法,即每次将整数部分除以2,余数为该位权上的数,而商继续除以2,余数又为上一个位权上的数,这个步骤一直持续下去,直到商为0为止,最后读数时候,从最后一个余数读起,一直到最前面的一个余数.下面举例: 例:将十进制的168转换为二进制 得出结果 将十进制的168转换为二进制,(10101000)2 分析:第一步,将168除以2,商84,余数为0. 第二步,将商84除以2,商42余数为0.

二进制、八进制、十进制、十六进制之间的转换

  最近复习软考各种进制之间的转换着实让人头疼,今天把常用的几种进制之间的转换问题简单做个总结,希望能够对大家有所帮助.   二进制八进制之间的转换   二进制与八进制之间的关系式每个八进制位对应三个二进制位,详情如下:   八进制:  0    1     2    3     4    5     6    7       二进制:000 001 010 011 100 101 110 111   实例:   27.651(8)  010111.110101001(2)   1001.000

[原创]PostgreSQL中十进制、二进制、十六进制之间的相互转换

在PostgreSQL中,二进制.十进制.十六进制之间的转换是非常方便的,如下: 十进制转十六进制和二进制 mydb=# SELECT to_hex(10); to_hex -------- a (1 row) mydb=# SELECT 10::bit(4); bit ------ 1010 (1 row) 十六进制转十进制和二进制 mydb=# SELECT x'A'::int; int4 ------ 10 (1 row) mydb=# SELECT x'A'::bit(4); bit -

二进制,八进制,十进制与十六进制之间的相互转换

功能:完成二进制,八进制,十进制与十六进制之间的相互转换(以字符数组形式输入). 要点: 字符数组反序:strrev(char *str); 字符数组转换为十进制整数:atoi(char *str); map容器完成字符到数值的转换: 字符数组完成数值到字符的转换: 1位16进制数可转换为4位2进制数 1位8进制数可转换为3位2进制数 使用右移和与运算代替除法和取余 #include<cstdio> #include<cstring> #include<cstdlib>