day1认识汇编(笔记)

学习地址:http://c.biancheng.net/view/3299.html

一.二进制与十进制相互转换

  1.无符号二进制整数到十进制数的转换

    dec = ( Dn-1 x 2n-1 ) + ( Dn-2 x 2n-2 ) +…+ ( D1 x 2)+ ( D0 x 2)

    D 表示一个二进制数字。比如,二进制数 00001001 就等于 9。计算该值时,剔除了数字等于 0 的位:( 1 X 23 ) + ( 1 X 20 ) = 9

    /*类推,10001001---->1*2^7+1*2^3+1*2^0 = 137/    整数从右到左,小数点后从左至右

  2.十进制整数到二进制数的转换

  不断将这个整数除以 2,并将每个余数记录为一个二进制数字,最后逆序排列得到。

      例如137:    137/2  =  68 ... 1; 

        68/2    =   34 ... 0 ;

        34/2    =   17 ... 0;

        17/2    =     8 ... 1;

          8/2    =     4 ... 0 ;

        4/2    =    2 ... 0;  

        2/2 =    1... 0;

        1/2 =    0  ... 1;    逆序,由下至上,10001001

 

二. 二进制加法

  0 + 0 = 0    0 + 1 = 1   1 + 0 = 1    1 + 1 = 10

  位对位相加

  有些情况下,最高有效位会产生进位。这时,预留存储区的大小就显得很重要。比如,如果计算 1111 1111 加 0000 0001,就会在最高有效位之外产生一个 1,而和数的低 8 位则为全 0。
       如果和数的存储大小最少有 9 位,那么就可以将和数表示为 1 0000 0000。但是,如果和数只能保存 8 位,那么它就等于 0000 0000,也就是计算结果的低 8 位。

  

三.字节

  在 x86 计算机中,所有数据存储的基本单位都是字节(byte),一个字节有 8 位。其他的存储单位还有字(word)(2 个字节),双字(doubleword)(4 个字节)和四字(quadword)(8 个字节)。

四.十六进制

  十六进制整数中的 1 个数字就表示了 4 位二进制位,两个十六进制数字就能表示一个字节(1个字节有8位二进制位,十六进制中的1个数字表示4位二进制位,故两个十六进制数能表示一个字节)

  无符号十六进制数到十进制的转换:

  任意n位数的十六进制整数:

  dec = (Dn-1 X 16n-1)+ (Dn-2 x 16n-2)+…+ (D1 X 161)+ (D0 x 160)

  

  无符号十进制数到十六进制的转换:

  把这个十进制数反复除以16,每次取余数作为一个十六进制数字,最后逆序排列。

  

posted @ 2020-01-09 14:47  心中有一海  阅读(153)  评论(0编辑  收藏  举报