美文网首页
数据的宽度和逻辑运算

数据的宽度和逻辑运算

作者: 豆瓣奶茶 | 来源:发表于2018-12-11 23:46 被阅读9次

    title: 数据的宽度和逻辑运算
    date: 2018-12-10
    tags:
    - 滴水逆向
    - 汇编
    - 逻辑运算
    categories:
    - 滴水逆向三期视频教程


    数据的宽度

    我们需要知道,无论是我们平时看到的视频(avi,mp4),还是图片png,jpg,在计算机中存储的时候,都是存储为0,1这个符号。

    在之前我们的学习中,我们经常会听到原码、反码、补码等消息,这都是后人总结出来的一些概念,计算机本质是没有这些的。

    就比如说有符号整型和无符号整型,计算机只知道自己存储的是0和1,是使用它的人自己规定这个是有符号还是无符号的。

    我们先把存储比作是容器,如果容器只能装4bit,比如我们存了一个数ffff,我们再给这个数加1,会变成什么?

    答案是0.计算机和真实的世界是不一样的,存不下的时候,直接抛弃。

    在有符号数据中,为什么用1表示负数?

    几个重要的计量单位(数据宽度)

    1 byte = 8 bit
    1 word = 16 bit
    1 dword = 32 bit
    

    二进制的逻辑运算

    逻辑运算就是CPU计算的本质,汇编语言并不是cpu计算的本质。(这块就设计到了电路的知识)

    或 or |
    与 and &
    异或 xor ^
    非  not !
    

    or,and,xor,not就是汇编语言的表示

    CPU是如何计算2+3=?

    先用一个容器X:存放二进制的2:0010
    在用一个容器Y:存放二进制的3:0011


    image.png

    然后再用一个容器R:存放0010和0011异或的结果。
    CPU需要判断容器R中是否是最终的结果,是否还需要继续运算。怎么判断呢?


    image.png

    让0010和0011进行与运算,与运算的结果向左移一位,<<1 ,如果结果是0,那说明上面容器R中的就是真正的结果。

    如果不是0,就是容器R中的值放到X中,把刚才判断得到的结果放到Y中,重复上面的操作。

    image.png

    逻辑运算的两个应用

    判断某个值第N位的值是多少?

    image.png

    比如我们要判断第四位的值是多少,我们就构造一个第四位是1的数,然后与这个数进行与运算。如果结果>0,表明第四位是1,不然第四位是0.
    因为我们构造的数除了第四位是1,其他都是0.与运算的话,除了第四位,其他的肯定都是0.

    相关文章

      网友评论

          本文标题:数据的宽度和逻辑运算

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