首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
华为云
V2EX  ›  程序员

想请教一下各位,关于进制转换问题

  •  
  •   wsds · 124 天前 · 947 次点击
    这是一个创建于 124 天前的主题,其中的信息可能已经有所发展或是发生改变。
    对于进制转换这个,一直懵懵懂懂的,只知道十进制转二进制是用除法取余数(笔算),但我看其他人转的时候,都是用口算的,而且不论数的大小,一分钟以内就算出来了,请问下是有什么诀窍吗?
    二进制转十进制是取当前位 2 的多次次方的和,我也得笔记,有什么快捷的换算办法吗
    9 回复  |  直到 2018-04-17 18:16:15 +08:00
        1
    vegito2002   124 天前 via iPad
    2^10 约等于 1000, 然后用这个跟 10 进制大部分都能估计个差不多了; 2^(10 以内)的基本上用多了就知道了;
        2
    ThirdFlame   124 天前
    2 的 10 次方 1024
    2 的 8 次方 256
    2 的 4 次方 16
    用多了 这些不就记住了。 剩下的就是就是拼拼凑凑 肯定了
        3
    jinhan13789991   124 天前
    同求方法,还有位运算,脑子浆糊一样
        4
    zyp0921   124 天前
    熟能生巧
        5
    MCVector   124 天前 via Android
    十六进制换二进制随意换。十进制要慢多了。应该是用的多了就记住了,各种 unsinged 数据类型上限或者是常用的 bit field.
        6
    locktionc   124 天前
    二进制转八进制,三位一组,高位不足三位补 0,1011011101 -> 001, 011, 011, 101->八进制 1335
    八进制转二进制,一个数对应三位二进制位。例如 1335, 1-> 001, 3-> 011, 5 -> 101 拼起来就是 001011011101
    二进制转十六进制,四位一组,高位不足四位补 0,1011011101-> 0010, 1101,1101->0x2(13)(13)->0x2dd
    十六进制转二进制,一个数对应四位二进制数。例如 0x2dd,2-> 0010, d - > 1101, 拼起来就是 001011011101

    十进制转二进制,记范围,例如 1283,1024 < 1283 < 2018 所以有 11 位,由于是奇数,所以末尾必为 1,所以是 1xxxxxxxxx1。1283 - 1024 = 259,由于 256 < 259 < 512,所以第 9 位必为 1,因此 1283 对应了 101xxxxxxx1。继续减,259 - 256 = 3 = 2^1 + 1,所以末尾必为 11,那么第 4 位到倒数第 3 位全为 0,所以结果为:10100000011
        7
    xwyam   124 天前 via Android
    把 2 的 16 次方之前的数都背下来是可行的
    另外,记一些特殊常用的,比如 192,168,384,768 这些,还有 ascii 里 48,65,97 这些
        8
    vincenttone   124 天前
    如果是一头驴单掌数数的话,就是 2 进制啦。
    一个人双手数数的时候,也是一样的。
    超过 10 个手指(或者驴的单掌手指数),就需要脑子里有个计数器记录一下数了几遍了,这个操作就加上了基础数值。

    至于快速换算,可以考虑记录每一位的数字,[..., 256, 128, 64, 32, 16, 8, 4, 2, 1]
    比如我说 64 转换 2 进制 >>> 1000000,只需要 64 所在的位置置 1,其他置 0。
    65 >>> 1000001,65 取 64 余,剩下 1,对应位置置 1。
    至于每一位如何记忆
    1.一般 8421 之类的好记,需要的时候不停的乘 2 就可以知道了
    2.而且大概 2 的乘方也是知道的,比如 1024、2048 之类的,给你一个 4111,明显就是 4096 附近,做个差 4111 - 4096 = 15,然后 15 下面就是 8 了,然后重复,421 一起是 7,于是 [4096:1, 2048:0, 1024:0, 512:0, 256:0, 128:0, 64:0, 32:0, 16:0, 8:1, 4:1, 2:1, 1:1 ] >>> 1000000001111
    3. 命令行用 python ( linux 自带)、ruby ( mac 自带)直接转换就可以
        9
    sampeng   124 天前
    电脑自带的计算器了解一下。。。
    不是特别明白背得这些数字的实际价值在哪里。。。炫技的一种?
    另外。。如果 lz 你一天写几十次进制转换,或者掉进制转换的坑里。。。想忘都难
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   鸣谢   ·   实用小工具   ·   1884 人在线   最高记录 3762   ·  
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.1 · 20ms · UTC 15:23 · PVG 23:23 · LAX 08:23 · JFK 11:23
    ♥ Do have faith in what you're doing.
    沪ICP备16043287号-1