编写程序计算二进制1的个数,编写一个程序计算二进制1的个数

2021-01-11 18:38:26 字数 3222 阅读 4385

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...