1楼:匿名用户
你这应该是要求用汇编写吧。是汇编习题吧
如果是用c写就很简单了。
void calculateones(int data)data = (data>>1);
}printf("%x", count);
}int main()
c语言由键盘给定一个正整数n,编程实现求该整数对应的二进制数中1的个数。**等!
2楼:背心_心背
#include
#include
int count1innum(int num)return result;
}//此方法如果num为负数,比如-7,则求的1的个数实际是7的二进制形式中1的个数
int count(int num)
return result;
}int main()
getchar();
return 0;}
3楼:匿名用户
#include
#include
intmain()
4楼:匿名用户
#include
int main()
i=i/2;
}while(i>=1);
printf("%d\n",count);
return 0;}
微机原理与接**术 编写1个程序,统计寄存器ax中二进制位1的个数,结果以1位十六进制数形式显示到屏幕上
5楼:匿名用户
code segment
assume cs:code
start:
mov ax,0ffffh ;测试用的,你可以修改为任何有效的值
mov cl,16 ;ax是一个字,有16位二进制
mov dl,0 ;用于累加ax中1的个数
a:rol ax,1 ;循环左移1称,16次循环后复原
jnc next ;该位是0,则cf=0,这里就是测试cf的值,为0则跳转不累加
inc dl ;cf=1时,dl+1
next:
loop a ;循环结构
add dl,30h ;将dl的值转为ascii码
cmp dl,'9' ;大于9则是a-f或者10
jbe print ;小于或者等于0则不必再转化ascii码
add dl,7 ;如果是a-f则转化
cmp dl,'f' ;这步关键,如果ax的值是0ffffh,则dl=16=10h,没有这步将会输出g
ja print_10 ;ax=0ffffh则跳转进行特殊处理
print:
mov ah,02h
int 21h
print_10:
mov dl,31h ;特殊情况只有一种,即dl=10h,故只要两次分别输出字符1和0即可
mov ah,02h
int 21h
mov dl,30h
int 21h
mov ah,4ch
int 21h
code ends
end start
6楼:匿名用户
assume cs:code, ds:datadata segment
tb db '0123456789abcdef'
data ends
code segment
start:
mov ax, data
mov ds, ax
mov ax, 3ch
mov cx, 16
xor bx, bx
nx:rol ax, 1
test al, 1
jz zero
inc bx
zero:
loop nx
mov ax, bx
lea bx, tb
xlat
mov ah, 2
mov dl, al
int 21h
mov ax, 4c00h
int 21h
code ends
end start
用汇编语言编写一个程序,统计寄存器ax中二进制“1”的个数,结果一位十六进制数的形式显示
7楼:杨_刘
;程序已实抄
现,主要考虑的是怎样获取1的个数
;具体以怎样的形式显
示没有太在意
;个数存在bl中,若想以各种形式显示,调用不同的子函数即可(现在各种进制转换的汇编**网上一堆)
code segment
assume cs:code
start:
mov ax,1234
mov bl,0;统计1的个数
mov cx,16;循环次数
loop1:
test ax,8000h;不断的左移,与8000h比较获取1的个数jnz loop2
inc bl
shl ax,1
loop2:
loop loop1
;输出1的个数
mov dl,bl
add dl,30h
mov ah,02h
int 21h
mov ah,4ch
int 21h
code ends
end start
8楼:幸运者二号
mov cx,16
;bx中统计ax中1的个数
mov bx,0
;循环左移16次
s0:rol ax,1
jnc s1
inc bx
s1:loop s0
9楼:
clcmov bl,0
mov cx,16
lab:
shl ax,1
adc bl,0
loop lab
c语言编写程序输入正整数n计算,c语言编写程序,输入一个正整数n,计算1+(1/3)+(1/5)+...的前n项之和。求过程
1楼 匿名用户 include int main for i 1 i n i printf sum 3f n sum return 0 示例运行结果 20sum 2 480 2楼 匿名用户 include int main void for int i 0 i printf 数列前 d 项之和为 g...
计算机二级"c语言"编写程序"求1+
1楼 月殒星堕 你的for i 1 i 100 i 这个语句多了一个分号, 相当于程序先循环使得i 101,然后再与sum相加,也就是sum i 0 101 101 2楼 丕屰教育 include main 讲解 for语句所在行后不应该有分号。 希望能帮到你。 用c语言编一个程序,求1 2 3 1...
C++编写程序,计算s 1+(1+21+
1楼 再见理想者 include using namespace std int main cout return 0 2楼 董俊锟 include void main printf sum d n sum 用c语言编写程序,计算s 1 1 2 1 2 3 1 2 3 n 3楼 会飞的小兔子 inc...