本来写了一段又觉得太简单了好像没什么写的必要,上完今天这课头真的晕了,还是记录一下,不然以后头又晕了看都看不懂老师在说什么。
第一章
> 第一节课 汇编语言基础
进制怎么转换就省略了。一些基本概念——
位 - bit,数据存储最小单位,两种状态——0和1;
字节 - byte,每8个bit组成一个byte,存放一个8位二进制数,CPU读写内存或外设的基本单位。
对于一个8位二进制数,如果是无符号数,则表示范围为0~255(2 ^ 8 - 1);如果是有符号数:
1、最高位表示符号,0为正,1为负;
2、表示范围为-127(1111 1111)~127(0111 1111);
3、先看原码、反码、补码给出的概念
原码:可以理解为真值的绝对值(?)
反码:x > 0时,同等于原码;x < 0时,除符号位全部取反。
补码:x > 0时,同等于反码;x < 0时,在反码基础上+1。
特殊情况:0的原码和反码不是唯一的,分为+0和-0;但补码唯一,即0000 0000;
初看这概念就很奇怪,也不好记忆,但也没想太多。
然后今天老师说“如果是有符号数,表达式中的数就是补码”,就很懵,为什么?补码有什么特权吗?
带哲学家bebe说过,电脑里只存在补码这一种存储方式,也就是说原码、反码纯粹只是为了求出补码二弄出来的东西,本身没有实际用处。
而后我看了篇关于这个的回答,有点恍然大明白的感觉。
一个很不错的理解,用于给出补码求原值:
无视符号位说法,直接看成无符号型,即0~255范围;如果 0 <= x补 <= 127(0111 1111),x = x补;如果 128(1000 0000) <= x补 <= 255(1111 1111), x = x补 - 256(也就是符号位取1表负数)
二、第二章
原文:https://www.cnblogs.com/jinkun113/p/12343867.html