Coder Jozu

I believe --- 这里坚持原创,拒绝转贴

  VC知识库BLOG :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 登录 ::
  13 随笔 :: 4 文章 :: 87 评论 :: 1 Trackbacks
<2005年12月>
27282930123
45678910
11121314151617
18192021222324
25262728293031
1234567

留言簿(4)

随笔分类

随笔档案

文章分类

文章档案

东接西链

搜索

最新评论

阅读排行榜

评论排行榜

// Bits.cpp : Calculate numbers of bits on a long number.
// Coder Jozu

#include "stdafx.h"

int main(int argc, char* argv[])
{
 long x;
 int num;
 char buff[128];

 
 while(1)
 {
  printf("enter a hex value:");
  gets(buff);
  if(buff[0] == 'q' || buff[0] == 'Q')
   break;

  if(!sscanf(buff, "%X", &x))
  {
   printf("Invalid number.\n");
   continue;
  }
  
  __asm
  {
   push esi
   push eax

   mov eax, x
   mov ecx, 32
   xor esi, esi
next:
   shr eax, 1
   jc  AddOne
   dec ecx
   jcxz end
   jmp next
AddOne:
   inc esi
   jmp next
end:
   mov num, esi
   pop eax
   pop esi
  }
  
  printf("number of %X has %d bits.\n", x, num);
 }
 return 0;
}

 

posted on 2005-03-09 11:27 Coder Jozu 阅读(2705) 评论(2)  编辑 收藏

评论

# re: 计算位数小算法 2005-03-09 12:23 freedk
没有必要用到asm吧

# re: 计算位数小算法 2005-12-23 10:51 phoniex
我实验了下,
十进制数123的长度是6bits,结果是错误的,实际长度是7bits

标题  
姓名  
主页
验证码 *
内容   
  登录  使用高级评论  Top
[使用Ctrl+Enter键可以直接提交]