随笔-80  评论-24  文章-0  trackbacks-0
@江南烟雨
若n为偶数,则总的比较次数 = 1 + 1.5 * (n - 2) = 1.5n - 2;
若n为奇数,则总的比较次数 = 1 + 1.5 * (n - 3) + 1 = 1.5n - 2.5或总的比较次数 = 1 + 1.5 * (n - 3) + 2 = 1.5n - 1.5
结合第二段代码,应该很容易分析出来吧?每个主循环内的比较次数是3次,主循环的循环次数为(n - 2) / 2次或者为(n - 3) / 2次。
re: CosmosKernel初探 myjfm 2011-06-10 19:31
@lwch
时钟中断肯定打开了吧?要不进程应该没办法调度
就是想知道保护模式如何进去的
继续加油阿~我们会持续关注的哦~
re: CosmosKernel初探 myjfm 2011-06-10 19:17
@lwch
那时钟终端默认是打开的?
另外保护模式是怎么进去的阿?
我还是不太明白咋用c#绕过保护模式那些东西的?
re: CosmosKernel初探 myjfm 2011-06-10 18:45
这个………………
中断向量表之类的?
表示没有看懂……
bug太太太多了,再修改修改吧~
re: 取反操作的细节问题 myjfm 2011-04-08 14:43
@zuhd
补码本身就是个约定
re: 取反操作的细节问题 myjfm 2011-04-08 11:38
@zuhd
既然高位已经被截取了那还怎么说“不是不能存储”呢?
求补码的过程本来就要把最高位符号位也用于计算
最高位符号位除了表示这个数是正是负外还有数值上的意义,它的作用不单单是符号位
所以你看-128的时候不能把最高位去掉再去看剩余7bit,要8个bit一起看~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
re: 取反操作的细节问题 myjfm 2011-04-08 10:00
@zuhd
对于有符号数来说:
如果是原码:00000000b是+0,10000000b是-0
如果是反码:00000000b是+0,11111111b是-0
而对于补码:00000000b是+0也是-0

下面是二进制代码与补码的对应:

00000000 +0/-0
00000001 +1
...
01111111 +127
10000000 -128
10000001 -127
...
11111110 -2
11111111 -1
从计组书上copy下来的~
re: 取反操作的细节问题 myjfm 2011-04-07 22:04
@zuhd
对于八位有符号数,能表示的数的范围不就是-128~127吗?-128不是0x80吗?
10000000B作为有符号数的补码来说怎么会是0的补码呢?好好看看计算机组成原理吧~
re: 取反操作的细节问题 myjfm 2011-04-07 21:57
@zuhd
不知道你说的这段话和我文章最后一段有什么区别阿?
re: 取反操作的细节问题 myjfm 2011-04-07 13:13
@zuhd
对于32位整型,0xffffff80是-128的补码吧?
而对于8位整型,0x80也是-128的补码吧?

另外,所以算数运算都是在寄存器中进行的吧?而现在32位机的寄存器都是32位的,所以才会存在整型提升问题,我是这么理解的~
@笨笨
反汇编确实可以了解到细节~
挺受用~收藏了~
@lwch
你这个是修改的linux源码吗?看代码风格不像阿,是Orange'S吧?