1248转换法:快捷心转二进制

1248转换法:快捷心转二进制

某日,小坤坤顶着狂风暴雨出门面试,坐了地铁,转了共享单车,摔了一跤,走过马路,跨过人行天桥,一路又唱又跳终于到达面试地点,见到了面试官:

面试官:“1的二进制是多少?”

小坤坤:“01”

面试官:“2呢?”

小坤坤:“10”(坤:So easy)

面试官:“13的二进制是多少?”

小坤坤:“这个需要算一下,平时不用” 说完掏出纸笔进行除二法运算

小坤坤顶着面试官灼热的目光一通写画后:“是1101”

面试官:“那15呢?”

小坤坤又一通写画道:“是1111”

面试官诧异:“就这还要笔算?合着你只背了10以内的二进制转换是吧?”

小坤坤顿时无言,羞愧离去

我们熟知的十进制转二进制的方法为除二法,需要列式计算,极为不便。这里介绍一种便于心算的方法,让面试官问到你不用再掏出草稿纸来列式计算。

二进制转十进制

先来点开胃小菜:

  • 110
  • 111
  • 1010

快速写出这三个数的十进制数字,不是死记硬背哦

十进制数字分别为6、7、10,怎么快捷算出来的呢,背后的指导理论是什么,观察下面的表格

8421
110

110,以0为假,1为真。为真的位的数字为4、2,加起来为6,这就是110的十进制。

代入1010,根据1248理论画出表格模型:

8421
1010

为真的位数字为8和2,加起来是10。怎么样,根据1248转换法十进制转二进制是不是很简单,你可能会问,要是101010怎么办

依此类推1、2、4、8、16、32、64、128…,为2的幂次方递进,如下

32168421
101010

为1的位的数字相加,即32 + 8 + 2 = 42,101010的十进制为42

十进制转二进制

计算下面三个数的二进制:

  • 9
  • 23
  • 77

还是使用1248转换法的理论来进行操作,对数字9进行拆解 9 = 8 + 1,列出1248表格

8421
1001

则"8"位和"1"位为真,则为1,余者补位0,则最终得到1001,这就是9的二进制。

对23拆解,23 = 16 + 7 = 16 + 4 + 2 + 1,列出1248表格:

168421
10111

观察得知,23的二进制为10111

同理,77 = 64 + 13 = 64 + 8 + 4 + 1 ,列出1248表格:

6432168421
1001101

余位补0,观察可知77的二进制为1001101.

我们以后遇到二进制和十进制互转的题目就不用怕了,也不用顶着面试官灼热的目光拿出草稿纸进行除二法慢慢推算(😇),只要根据1248转换理论心列表格就迎刃而解了。

十进制和十六进制互转

这里顺便提一下十进制转十六进制,方法其实也很简单,但是如果不主动去总结发现很容易就忽略了。

  • 24
  • 36
  • 82

计算这三个数的16进制
24 = 16 ∗ 1 + 8 = > 0 x 18 24 = 16 * 1+ 8 => 0x18 24=161+8=>0x18

36 = 16 ∗ 2 + 4 = > 0 x 24 36 = 16 *2 + 4 => 0x24 36=162+4=>0x24

82 = 16 ∗ 5 + 2 = > 0 x 52 82 = 16 * 5 + 2 => 0x52 82=165+2=>0x52

观察可知,由16的倍数加上剩余的数字组成16进制数。

十六进制转十进制则为:
0 x 18 = 1 ∗ 1 6 1 + 8 ∗ 1 6 0 = 24 0x18 = 1 * 16^1 + 8 * 16^0 = 24 0x18=1161+8160=24

0 x 24 = 2 ∗ 1 6 1 + 4 ∗ 1 6 0 = 36 0x24 = 2 * 16^1 + 4 * 16^0 = 36 0x24=2161+4160=36

0 x 52 = 5 ∗ 1 6 1 + 2 ∗ 1 6 0 = 82 0x52 = 5*16^1 + 2 * 16^0 = 82 0x52=5161+2160=82


END


  • 21
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
很好,这是一个计算机科学的问题,不是一个普通的对话问题。为了回答这个问题,我将分成以下几个部分: 1. 41进制转换 41进制转换是将一个数转换为41进制的过程。转换方法是将该数不断地除以41,直到商为0,然后将每次的余数倒序排列即可得到该数的41进制表示。例如,将100转换为41进制的过程是: 100 ÷ 41 = 2 余 18 2 ÷ 41 = 0 余 2 因此,100的41进制表示为218。 2. 软件开发的目的 软件开发的主要目的是为了解决现实中的问题。开发软件的过程中,需要通过分析问题、设计解决方案、编写代、测试和维护等多个环节来完成软件的开发。软件开发的目的是为了提高效率、降低成本、改善生活、增强竞争力等。 3. 编写程序,实现将输入的一个无符号整数转换为二进制和八进制,十六进制表示 以下是一个 C 语言程序的示例,可以将输入的无符号整数转换为二进制、八进制和十六进制表示,并将结果存储在字符数组中输出: ```c #include <stdio.h> #include <string.h> int main() { unsigned int num; char binary[33], octal[12], hex[9]; int i; printf("请输入一个无符号整数:"); scanf("%u", &num); // 将 num 转换为二进制表示 for (i = 0; i < 32; i++) { binary[i] = (num & 0x80000000) ? '1' : '0'; num <<= 1; } binary[32] = '\0'; // 将 num 转换为八进制表示 sprintf(octal, "%o", num); // 将 num 转换为十六进制表示 sprintf(hex, "%X", num); printf("二进制表示: %s\n", binary); printf("八进制表示: %s\n", octal); printf("十六进制表示: %s\n", hex); return 0; } ``` 4. 数据结构 在上述程序中,主要使用了数组和函数两种数据结构。数组用于存储转换后的二进制、八进制和十六进制表示,而函数则用于将输入的无符号整数转换为不同进制的字符串表示。 5. 软件功能说明 该软件有以下四个主要功能: 1. 将无符号整数转换为二进制表示 2. 将无符号整数转换为八进制表示 3. 将无符号整数转换为十六进制表示 4. 实现二进制、八进制和十六进制之间的任意转换 6. 软件验收标准 对该软件的验收标准应包括以下几个方面: 1. 界面友好、直观,易于操作 2. 数据验证严谨,可以正确地处理各种输入 3. 系统稳定可靠,能够长时间运行而不出现异常或崩溃 4. 软件功能完备,能够实现所有要求的功能,并且能够在合理的时间内完成转换操作
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值