-
從儲存單元開始,有乙個256位元組的資料塊,編寫乙個程式來計算資料塊中所有位數,並進行雙迴圈。
data segment
buf db 1,2,3,5,45,23,33,21,40n equ $ buf
data ends
code segment
assume cs:code , ds:datastart:
mov ax , data
mov ds , ax
mov bx , 256
mov si , offset buf
mov dx , 0
loop1:
mov ax , si]
inc si
mov cx , 8
loop2:
shl ax , 1;運算元向左移動1位,高位為cf,最後乙個位為0jnc loop1; 如果沒有攜帶,它將被轉移。
loop loop2
inc dx
dec bx
and bx , bx ;bx
jne loop1
mov count , dx ;dx 儲存數字 1。
mov ah , 4ch
int 21h
code ends
end start
-
使用 Carry Loop Left Shift 命令 rcl,將高位一一移動到 cf 中,然後使用 jc 或 jnc 判斷 cf 我不知道對你有沒有幫助。
-
在二進位數中找到吉祥數 1 - 部落格花園。
n & 1獲取 n 的銀原石最後一位數字,然後移位以確定每個數字。
例如,n = 250,n & 1 結果前 7 位都是 0,所以 n & 1 = n 糞便漏掉了最後一位數字。
最終計數值不是比較位,而是 while 迴圈的數量。 其工作原理如下:
例如,n = 7
-
使用我們常用的十進位轉換二進位演算法,即短除法。
例如:x&(x-1)。
當 x=5 時,5 的二進位值為 0101
它被計算了兩次,這意味著在 5 的二進位數中只有 2 個 1
實現如下:
-
使用我們來轉換通常的小數。
二進位演算法,即短除法。
例如:x&(x-1) 當 x=5 時,5 的二進位是 01010101 & 0101-1) == 0101 & 0100 == 0100
它被計算了兩次,這意味著在 5 的二進位數中只有 2 個 1
實現如下:
-
#include
int main()
int a,i=0,j,k=0,m;
int b[30];
scanf("%d",&a);
while(a>0) ten 確實轉換為二進位。
b[i]=a%2;
a/=2;i++;
for(j=0;jif(b[j]==1)
k++;printf("%d"假裝是胡,k);總數 1.
for(j=0;jm=b[j];
b[j]=b[i-j-1];
b[i-j-1]=m;}
for(j=0;jprintf("%d ",b[j]);霍爾桶輸出的二進位數。
希望對你有所幫助。
-
用我們常用的10-破壞性基系統對二進位演算法來回答,也就是短除法。
例如:x&(x-1) 當 x=5 時,5 的二進位值為 0101,計算兩次,這意味著 5 的二進位數只有 2 個 1s
實現如下:
把二進位數。
所有的“0”和“1”都被認為是十進位數中的“0”和“1”。 根據十進位數的乘法運算,任何數字乘以“0”的乘積都是“0”,這同樣適用於二進位數的乘法。 只有“1”乘以“1”等於“1”。 >>>More