原反补的概念从时钟引入, 8点+2 = 10点. 而8点-10也即是10点.即2是-10以12为模的补码.整型存储的本质
-10要转化成2 ,可以用模-10来得到,但硬件中位数是固定的,模数为1000...,最高位会溢出舍弃.即全0.无法做差.
引入反码转换计算:即2 == 模-10 == 模-1+1-10 == 1111... -10 +1 == 反码+1; 这个111...-10就是反码,即反码+1==补码的由来
在二进制中,全1减任何数都是直接去掉对应的1.所以反码就是原码符号位不变,别的位全部取反
转换成补码后,底层就不需要再考虑符号位,等运算完后再看符号位.
截断的是高位照旧低位? 因为赋值永远都是从低地址赋起(从低到高依次赋值),因此空间不足时高位直接丢弃.1 0000 0001 0100
注意:表达式计算时进位产生的溢出不是截断,进位是会保存在干系寄存器中的.只有将效果保存在变量时,因为溢出,放不下,只能舍弃一部分数据,此时才发生截断.
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) | Powered by Discuz! X3.4 |