汇编之简单的二进制(狂神说之简单的二进制)

汇编之简单的二进制(狂神说之简单的二进制)

数据宽度

  • 位 0 1
  • 字节 0-0xFF
  • 字 0-0xFFFF
  • 双字 0-0xFFFFFFFF
  • 在计算机中,每一个数据都需要给它定义类型,给它定义宽度,在内存中的宽度。4

有符号数无符号数

无符号数规则

你这数字是什么,那就是什么

1 0 0 1 1 0 1 0  十六进制:0x9A   十进制:154
有符号数规则

最高位是符号位:1(负数) 0(正数)
原码反码补码

  • 有符号数的编码规则
原码:最高位符号位,对齐它的位进行本身绝对值即可
反码:
 	正数:反码和原码相同
 	负数:符号位一定是1,其余位对原码取反
补码:
	正数:补码和原码相同
	负数:符号位一定是1,反码+1

测试 测试都基于位是8位
如果是正数,原码反码补码都是一样的(1)
原码: 0000 0001
反码: 0000 0001
补码: 0000 0001

如果是负数(-1)
原码: 1000 0001
反码: 1111 1110
补码: 1111 1111 (负数则在反码的基础上+1)

位运算

与运算(and &)两个都为1,结果为1
在这里插入图片描述

1011 0001
1101 1000
---------------与运算
1001 0000

或运算(or |)只要有一个1,结果就为1
在这里插入图片描述

1011 0001
1101 1000
---------------或运算
1111 1001

异或运算 (xor ^)不一样就是1
在这里插入图片描述

1011 0001
1101 1000
---------------异或运算
0110 1001

非运算(单目运算符 not ~)0就是1,1就是0

1101 1000
0010 0111

位运算(移动位 左移*2 右移/2)
位运算在计算机中远比加法要快

左移(shl <<)
0000 0001 所有二进制位全部左移若干位,高位丢弃,低位补0
0000 0010

右移(shr >>)
0000 0001 所有二进制位全部右移若干位,低位丢弃,高位补0,1(根据符号位决定)
0000 0000

位运算的加法
4+5

# 计算机加法
0000 0100
0000 0101
----------加法,计算机只有与或非..
0000 1001

#第一步:异或:如果不考虑进位,异或就可以直接得出结果集
0000 0100
0000 0101
------------
0000 0001

#第二步:与运算(判断进位,如果与运算结果集为0,没有进位)
0000 0100
0000 0101
-----------
0000 0100

#第三步:将与运算得结果左移一位 读位的结果 0000 1000

#第四步:将移位后的结果与第一步异或出来的结果进行异或运算
0000 0001
0000 1000
-----------
0000 1001

#第五步:与运算判断第四步的两个数有没有进位,如果运算结果为0,没有进位

#所以最终的结果就是与运算为0的结果集的上一个异或预算的结果集

特别鸣谢

本篇文章完全采集于【狂神说】最通俗易懂的计算机底层教学,二进制到汇编学习!:https://www.bilibili.com/video/BV1ni4y1G7B9?p=1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值