亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

請教下為什么輸出二進制的字符串的高位0會消失;

請教下為什么輸出二進制的字符串的高位0會消失;

RISEBY 2023-03-05 22:18:24
//實現無符號循環右移;#include <stdio.h>unsigned int rotate_right(unsigned int x,int num);int main(void){unsigned int x;unsigned int num;char string[40];printf("輸入操作數和右移次數:");while(scanf("%d%d",&x,&num)==2){printf("\n數 %u 右移 %u 位的結果是: ",x,num);x=rotate_right(x,num);itoa(x,string,2);printf("%s\n",string);printf("輸入操作數和右移次數:");}return 0;}unsigned int rotate_right(unsigned int x,int num){ int i;for(i=0;i<num;i++){if((x&1)==1){x=x>>1;x=x|(1<<31);}else{x=x>>1;x=x&(~(1<<31));}}return x;}
查看完整描述

2 回答

?
largeQ

TA貢獻2039條經驗 獲得超8個贊

#include <string>
#include <iostream>
using namespace std;
string foo(int n)
{
string str;
for(unsigned i=0; i<32; ++i)
{
str.insert(str.begin(),'0'+(n&1));
n >>= 1;
}
return str;
}

void main(void)
{
cout<<foo(567)<<endl;
}


查看完整回答
反對 回復 2023-03-08
?
LEATH

TA貢獻1936條經驗 獲得超7個贊

1.在這里,return 0;的作用僅僅是表示mian()函數運行結束。作用是不執行后面的的system("pause"); 語句.

2.函數itoa求出的只是該二進制數對應的“字符串”是char類型,不是int類型的數據。這里只是看個結果,所以,用字符串足已。
請看:
printf("%s\n","10101011"); 
printf("%d\n",10101011); 
二者輸出結果完全一樣!

如果你想存在int類型數據中,簡單的很,前面再加atoi()函數即可。
請看:
int num = atoi( itoa(num, str, 2) ); 
printf("%d\n",num); 

3.:%s是是輸出字符串的格式控制符,%c是輸出單個字符的格式控制符。

查看完整回答
反對 回復 2023-03-08
  • 2 回答
  • 0 關注
  • 145 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號