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


    /*
     * 
     * 每一个位上对应的数字
     * ……    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.十进制换算成二进制,然后加上负号
     */
  • 相关阅读:
    学习笔记之19-static和extern关键字1-对函数的作用
    学习笔记之18-变量类型
    学习笔记之17-预处理指令3-文件包含
    学习笔记之16-预处理指令2-条件编译
    背包问题
    kali linux 忘记root密码重置办法
    wp8数据存储--独立存储文件 【转】
    线段树入门【转】
    线段数【转】
    大数阶乘算法【转】
  • 原文地址:https://www.cnblogs.com/gavinYang/p/11196497.html
Copyright © 2020-2023  润新知