美文网首页
汇编(注)、进制数据

汇编(注)、进制数据

作者: fanren | 来源:发表于2018-04-21 20:58 被阅读0次

进制

学习进制的障碍

很多人学不好进制,原因是总以十进制为依托去考虑其他进制,需要运算的时候也总是先转换成十进制,这种学习方法是错误的.
我们为什么一定要转换十进制呢?仅仅是因为我们对十进制最熟悉,所以才转换.
每一种进制都是完美的,想学好进制首先要忘掉十进制,也要忘掉进制间的转换!

进制的定义

  • 八进制由8个符号组成:0 1 2 3 4 5 6 7 逢八进一
  • 十进制由10个符号组成:0 1 2 3 4 5 6 7 8 9逢十进一
  • N进制就是由N个符号组成:逢N进一

小练习

  • 1 + 1 在____情况下等于 3 ?

十进制由10个符号组成: 0 1 3 2 8 A B E S 7 逢十进一
如果这样定义十进制: 1 + 1 = 3!就对了!

  • 传统的十进制和我们自定义的十进制不一样,通过这种方式,我们可以对我们的数据进行加密;

十进制是由十个符号组成的,逢十进一,符号是可以自定义的;

进制的运算

进制的运算,是通过加法表和乘法表来进行运算;

八进制加法表

 0  1  2  3  4  5  6  7 
10 11 12 13 14 15 16 17
20 21 22 23 24 25 26 27
...

1+1 = 2                     
1+2 = 3   2+2 = 4               
1+3 = 4   2+3 = 5   3+3 = 6
1+4 = 5   2+4 = 6   3+4 = 7   4+4 = 10  
1+5 = 6   2+5 = 7   3+5 = 10  4+5 = 11  5+5 = 12
1+6 = 7   2+6 = 10  3+6 = 11  4+6 = 12  5+6 = 13  6+6 = 14
1+7 = 10  2+7 = 11  3+7 = 12  4+7 = 13  5+7 = 14  6+7 = 15  7+7 = 16

八进制乘法表

0 1 2 3 4 5 6 7 10 11 12 13 14 15 16 17 20 21 22 23 24 25 26 27...
1*1 = 1                     
1*2 = 2   2*2 = 4               
1*3 = 3   2*3 = 6   3*3 = 11    
1*4 = 4   2*4 = 10  3*4 = 14  4*4 = 20
1*5 = 5   2*5 = 12  3*5 = 17  4*5 = 24  5*5 = 31
1*6 = 6   2*6 = 14  3*6 = 22  4*6 = 30  5*6 = 36  6*6 = 44
1*7 = 7   2*7 = 16  3*7 = 25  4*7 = 34  5*7 = 43  6*7 = 52  7*7 = 61

二进制的简写形式

       二进制: 1 0 1 1 1 0 1 1 1 1 0 0
三个二进制一组: 101 110 111 100
       八进制:   5   6   7   4
四个二进制一组: 1011 1011 1100
     十六进制:    b    b    c

二进制:从0 写到 1111
0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111
这种二进制使用起来太麻烦,改成更简单一点的符号:
0 1 2 3 4 5 6 7 8 9 A B C D E F 这就是十六进制了

数据宽度

  • 数学上的数字是没有大小限制的,可以无限大;
  • 计算机中,由于受硬件的限制,数据都是有宽度限制的(我们称之为数据宽度),超过最多宽度的数据,就会被丢弃;
#import <UIKit/UIKit.h>
#import "AppDelegate.h"

int test(){
    int cTemp = 0x1FFFFFFFF;
    return cTemp;
}

int main(int argc, char * argv[]) {
    printf("%x\n",test());
    @autoreleasepool {
        return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
    }
}

int值是4个字节的,它最大的值为0xFFFFFFFF,如果超过这个值,前面的数据就会被丢弃;

计算机中常见的数据宽度

  • 位(Bite):一个位就是一个二进制位,0或1;
  • 字节(Byte):一个字节(Byte)是由八个位(Bite)组成,内存中最小的单位是字节;
  • 字(word):一个字是由两个字节(16位)组成,分别为高字节和低字节;
  • 双字(Doubleword):一个双字是由两个字(32位)组成。

无符号数与有符号数

计算机中并不存在无符号数,这个无符号数是我们自己想出来的;


  • 无符号数,直接换算!

当指定一个数为无符号数时,那么其最高位的0或1,同其他数一样,表示数字的大小;

  • 有符号数:

当指定一个数为有符号数时,那么其最高位就是符号位,为1时表示该数为负数,为0是表示该数为正数;
正数: 0 1 2 3 4 5 6 7
负数: F E D B C A 9 8
-1 -2 -3 -4 -5 -6 -7 -8

相关文章

  • 汇编(注)、进制数据

    进制 学习进制的障碍 很多人学不好进制,原因是总以十进制为依托去考虑其他进制,需要运算的时候也总是先转换成十进制,...

  • smali语法第一课

    Smali是一种汇编语法,来源Dalvik的vm的字节码,即dex文件中的bytecode=二进制数据,反汇编后得...

  • 汇编(注)二、二进制运算

    源码、反码、补码 数字在自然界中抽象出来的时候,是没有正数和负数的概念的(一个人,两个人,而没有负一个人);计算机...

  • iOS逆向基础篇--汇编

    逆向开发是建立在分析二进制指令上面,二进制指令与汇编语言一一对应。通过分析app二进制反汇编的汇编语言来推测逻辑,...

  • 2022-07-02  汇编语言 进制

    构成机器语言的是二进制数,而在汇编语言中,则使用十进制数和十六进制数记录数据。若仅仅写出123这样的数字,表示的就...

  • 汇编基础笔记一

    汇编指令 汇编代码,高级语言-》汇编代码-》二进制-》计算机执行 高级语言只能转换成一种汇编代码,汇编代码可能转换...

  • lab1 二进制炸弹

    汇编与反汇编 汇编与反汇编的区别 phase_1 比较字符串是否相同 二进制炸弹 常见汇编指令详解 AT&T 格式...

  • 汇编 进制练习

    加密:对一个数进行异或的结果再进行异或会得到最开始的数据。这就是加密的本质。秘钥是进行异或的数,原始数据是被异或的...

  • 汇编一-计算机中数的表示

    汇编语言: 1.是面向机器的程序设计语言 1.加算计数据的表示 数制,基数,位权,二进制,十六进制,不同数制之间的...

  • 汇编语言简介

    机器语言(二进制语言编写) -->汇编语言(形象化二进制)-->高级语言 汇编语言的特点:1>与硬件有关(不同的C...

网友评论

      本文标题:汇编(注)、进制数据

      本文链接:https://www.haomeiwen.com/subject/hxuflftx.html