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

2018-04-17 09:04:53 +08:00
 wsds
对于进制转换这个,一直懵懵懂懂的,只知道十进制转二进制是用除法取余数(笔算),但我看其他人转的时候,都是用口算的,而且不论数的大小,一分钟以内就算出来了,请问下是有什么诀窍吗?
二进制转十进制是取当前位 2 的多次次方的和,我也得笔记,有什么快捷的换算办法吗
1949 次点击
所在节点    程序员
9 条回复
vegito2002
2018-04-17 09:11:03 +08:00
2^10 约等于 1000, 然后用这个跟 10 进制大部分都能估计个差不多了; 2^(10 以内)的基本上用多了就知道了;
ThirdFlame
2018-04-17 09:20:57 +08:00
2 的 10 次方 1024
2 的 8 次方 256
2 的 4 次方 16
用多了 这些不就记住了。 剩下的就是就是拼拼凑凑 肯定了
jinhan13789991
2018-04-17 09:38:48 +08:00
同求方法,还有位运算,脑子浆糊一样
zyp0921
2018-04-17 09:52:45 +08:00
熟能生巧
MCVector
2018-04-17 10:00:17 +08:00
十六进制换二进制随意换。十进制要慢多了。应该是用的多了就记住了,各种 unsinged 数据类型上限或者是常用的 bit field.
locktionc
2018-04-17 10:29:30 +08:00
二进制转八进制,三位一组,高位不足三位补 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
xwyam
2018-04-17 10:37:08 +08:00
把 2 的 16 次方之前的数都背下来是可行的
另外,记一些特殊常用的,比如 192,168,384,768 这些,还有 ascii 里 48,65,97 这些
vincenttone
2018-04-17 15:32:15 +08:00
如果是一头驴单掌数数的话,就是 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 自带)直接转换就可以
sampeng
2018-04-17 18:16:15 +08:00
电脑自带的计算器了解一下。。。
不是特别明白背得这些数字的实际价值在哪里。。。炫技的一种?
另外。。如果 lz 你一天写几十次进制转换,或者掉进制转换的坑里。。。想忘都难

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/447374

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX