zoukankan      html  css  js  c++  java
  • 02.数据宽度和逻辑运算

    BYTE 字节 8bit
    WORD 字 16bit
    DWORD 双字 32bit
    计算机只认识0,1
    计算机只会做逻辑运算

    1.CPU是如何计算2+3=?
    def logical_add(n1, n2):
    a = n1 ^ n2
    b = n1 & n2
    b <<= 1

    if b == 0:
        return a
    else:
        return logical_add(a, b)
    

    2.如果想获取某个值的笫N位的值是多少?
    def n_binary(num, n):
    if n < 0:
    return -1
    else:
    return int((num & 1 << n) > 0)
    3.最简单的加密算法异或(要加密的数据0x2015, 密钥0x54):
    加密
    0010 0000 0001 0101
    0101 0100 0101 0100
    0111 0100 0100 0001

    0x7441

    解密
    0111 0100 0100 0001
    0101 0100 0101 0100
    0010 0000 0001 0101

    0x2015

    1.八进制数2-5, 在计算器中的的结果是:1 777 777 777 777 777 777 775‬为什么?
    本质:计算机只管存储二进制, 其他进制只是表现形式
    64bit
    2 - 5
    -3
    11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111101
    1 111 111 1 11 111 111 111 111 11 1 111 111 1 11 111 111 111 111 11 1 111 111 1 11 111 101
    1 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 5
    2.使用异或对87AD6进行加密后再进行解密,加解密密钥:5
    87AD6
    5

    加密
    1000 0111 1010 1101 0110
    0101 0101 0101 0101 0101
    ^
    1101 0010 1111 1000 0011
    D 2 F 8 3
    0xD2F03

    解密
    1101 0010 1111 1000 0011
    0101 0101 0101 0101 0101
    ^
    1000 0111 1010 1101 0110
    8 7 A D 6
    0x87AD6

    3.只用逻辑运算计算2-3=?(涉及内容:逻辑运算、移位、数据宽度)
    2-3
    0010
    1101

    ^
    1111
    &
    0000

    1111
    -1

    1.使用DTDebug打开一个EXE程序(F3),并找到寄存器窗口
    2.使用DTDebug打开一个EXE程序(F3),单步执行程序(F8)
    3.记住这8个通用寄存器的名称,按照顺序
    4.使用DTDebug打开一个EXE程序(F3),使用MOV指令修改8个寄存器的值,单步执行,观察修改后的结果。

  • 相关阅读:
    为什么要选择忍者站群?
    SDCMS1.31 如何发布?
    强大的忍者站群
    出现未能加载“OpenWebKitSharp”是什么原因?
    wordpress发布模块如何使用?
    忍者站群做了百度竞价,岂不是跟站群相违背吗?
    点点博客的发布模块,如何使用?
    为什么有时候明明提示登陆成功,却无法获取分类或无法发布?
    被百度K了,怎么办?
    笔记0611
  • 原文地址:https://www.cnblogs.com/ret688/p/12825993.html
Copyright © 2011-2022 走看看