C语言进制转换问题,求大神看看什么情况。 c语言考试题 大神求代码啊!!!十进制跟二进制、八进制、十六...

C\u8bed\u8a00\u8fdb\u5236\u8f6c\u6362\u95ee\u9898\uff0c\u7ee7\u7eed\u6c42\u89e3\u91ca

\u601d\u8def\u5f88\u597d\uff0c\u4f46\u8f93\u5165\u7684\u662f\u5b57\u7b26\uff0c\u5374\u6309\u6574\u578b\u5904\u7406\u4e86\uff0c\u5c31\u51fa\u9519\u4e86\u3002\u7528char\u58f0\u660e\u7684\u5c31\u662f\u4e00\u4e2a\u5b57\u8282\u7684\u6574\u578b\u6570\uff0c\u76f4\u63a5\u7528\u5c31\u53ef\u4ee5\u4e86\u3002\u4e0b\u9762\u662f\u6539\u8fc7\u7684\uff0c\u81ea\u5df1\u5bf9\u7167\u770b\u2026\u2026
void main(void){
char a;
int b[8];
int i,k=0;
scanf("%d",&a);
int j=0x80;
for(;j;j>>=1){
if(j&a){
b[k++]=1;
}
else{
b[k++]=0;
}
}
for(int l=0;l<8;l++){
printf("%d",b[l]);
}
}

#include char *d2b(unsigned int dec, char pbin[]) { unsigned int temp; int i=8; while(i>=0) { temp=dec; temp=temp>>i; temp=temp&1; pbin[8-i]=temp+'0'; i--; } pbin[8-i]='\0'; return pbin;}int main(void){ int i; char bin[10]; printf("decimal\t\tBinary\t\tOctal\t\tHexadecimal\n"); for(i=1;i<=256;i++) printf("%d\t\t%s\t%.3o\t\t%.2x\n",i,d2b(i,bin),i,i); return 0;}

这是进制转换的代码,用于把一个数转换成某一进制下相应的字符以输出。
不妨假设s[i]=11,看看发生了什么事情。经if语句判断后,执行s[i]+= 'A' - 10这行代码,把s[i]=11代入表达式,则s[i] = 'A' + 11 - 10 = 'A' + 1 = 'B'。如果你熟悉16进制,很显然B就表示了10进制中的11。当然,推广之后,任何10以上的进制都可以把B作为11。
如果s[i] = 8,则执行s[i] += '0',即s[i] = '0' + 8 = '8'。
总结一下,11转换到'B',8转换成'8'。其他数字依此推出,如10转换成'A',你可以自己尝试一下,了解这种非常常见的转换方法

‘0’那个是要把0~9这10个数字转换成对应的ASCII码, 比如1 应该是1+'0'=49, 字符‘1’的ASCII就是49
s[i] += 'A' - 10; 这个写法比较难看, 改成 s[i] = s[i]-10 + 'A'; 就好理解一些了,当s[i]>=10 的时候, 按照10->A, 11->B, 12->C, 13->D, 14->E, 15->F进行转换, 比如s[i]=14, 先减去10变成4, 在加上'A' 变成69,也就是'E'的ASCII码

如果s[i]>=10,说明数字0-9不够用,要开始用字母了,那么用哪个字母好呢?当然是比A大多少,就从A往后数多少喽
举个例子,比如n=14,要转成16进制,那么
s[0]=14%16=14,14大于等于10对不对!那么s[0]=14+('A'-10)=14+55=69 ,那么69对应哪个字母呢?查一下ASCII表,是不是就是E 。14用16进制是不是正好就是E!!
如果s[i]小于10,那么s[i]+='0',就相当于s[i]是多少就从ASCII表上从0往后数多少个,比如n还是14,要转成8进制,s[0]=14%8=6 , 6<10,接着 s[0]=6+'0'=6+48=54,54对应的字符是6,接着n=14/8=1, s[1]=1%8=1 ,1<10,接着s[1]=1+'0'=49,对应的字符是1,于是s={6,1},14转换为8进制就是16

代码没有任何说明,不知道目的是什么。

  • C璇█杩涘埗杞崲闂,姹傚ぇ绁炵湅鐪浠涔堟儏鍐点
    绛旓細杩欐槸杩涘埗杞崲鐨勪唬鐮侊紝鐢ㄤ簬鎶婁竴涓暟杞崲鎴愭煇涓杩涘埗涓嬬浉搴旂殑瀛楃浠ヨ緭鍑恒備笉濡ㄥ亣璁緎[i]=11锛岀湅鐪嬪彂鐢熶簡浠涔堜簨鎯呫傜粡if璇彞鍒ゆ柇鍚庯紝鎵цs[i]+= 'A' - 10杩欒浠g爜锛屾妸s[i]=11浠e叆琛ㄨ揪寮忥紝鍒檚[i] = 'A' + 11 - 10 = 'A' + 1 = 'B'銆傚鏋滀綘鐔熸倝16杩涘埗锛屽緢鏄剧劧B灏辫〃绀轰簡10杩涘埗涓殑11...
  • C璇█杩涘埗杞崲闂
    绛旓細鍏杩涘埗 0 1 2 3 4 5 6 7 渚嬪 浜岃繘鍒讹細 101 111 000 101 001 杞寲涓哄叓杩涘埗鏄細5 7 0 5 1
  • 闂竴涓C璇█涓鐨鎹㈢畻闂
    绛旓細0x寮澶磋〃绀猴紝璇ユ暟鎹槸16杩涘埗鏁版嵁銆16杩涘埗杞寲涓10杩涘埗鐨勬柟娉曞涓嬶細渚1.鎶0x13杞寲涓10杩涘埗銆3*锛16鐨0娆℃柟锛+1*锛16鐨1娆℃柟锛= 3*1+1*16 = 19 渚2.0x1234杞负涓10杩涘埗銆4*锛16鐨0娆℃柟锛+3*锛16鐨1娆℃柟锛+2*锛16鐨2娆℃柟锛+1*锛16鐨3娆℃柟锛= 4660 鍏跺畠杞寲渚濇绫绘帹锛岃浣忥紝灏辨槸...
  • C璇█杩涘埗杞崲闂
    绛旓細澶ф暟杞崲鎴愬皬鏁拌繘鍒舵椂涓昏鏄眰浣欑畻娉曪紝灏忔暟杩涘埗杞崲鎴愬ぇ鏁拌繘鍒舵椂瑕佺敤n娆℃柟绠楁硶銆傛眰浣欏悗鎶婃暟瀛椾繚瀛樿捣鏉ヨ緭鍑哄氨鍙互浜嗐
  • 涓涓緢绠鍗曠殑C璇█棰,灏辨槸鎶婂崄鍏杩涘埗鐨勬暟杞崲涓哄崄杩涘埗鐨勬暟,鏈2涓湴...
    绛旓細寰幆浣撻鍏堣鍙栬緭鍏ワ紝濡傛灉绗﹀悎涓嬭堪瑕佹眰锛宔lse-if鏄笉杩涘叆鐨勶紝鍗冲缁堝浜庤鍙栫姸鎬佽屼笉杞崲锛1. 褰撳墠瀛楃鏄暟瀛楋紱2. 褰撳墠瀛楃鏄痑-f涓殑涓涓瓧姣嶏紱3. 褰撳墠瀛楃鏄疉-F涓殑涓涓瓧姣嶏紱濡傛灉婊¤冻杩欎簺锛屽皢濮嬬粓澶勪簬璇诲彇杈撳叆鐨勭姸鎬併傚惁鍒欏紑濮嬭繘琛杞崲锛灏辨槸else -if澶勭悊浜嗐傝浆鎹㈢粨鏉熶箣鍚庯紝鎶奻lag鍐嶇疆鍥0锛岀‘璁...
  • c璇█杩涘埗杞崲闂
    绛旓細printf("杈撳叆鎵杞崲涓虹殑杩涘埗1鎴3锛1浠h〃8杩涘埗锛2浠h〃10杩涘埗锛3浠h〃16杩涘埗锛塡n");scanf("%d",&p);if(p==1){ / [缂鸿姳鎷彿]*/ scanf("%d",&a);printf("%o\n",a);} / [缂鸿姳鎷彿]*/ if(p==3){ / [缂鸿姳鎷彿]*/ scanf("%d",&a);printf("%x\n",a);} / [缂鸿姳鎷彿]*...
  • c璇█灏嗗崄杩涘埗杞崲鎴愪换鎰忚繘鍒,璇澶х鐪嬬湅鍝効閿欎簡
    绛旓細鏈変袱涓湴鏂 锛1锛夊0鏄庢椂base鏄痠nt绫诲瀷锛岃緭鍏ユ椂鍗村彉鎴恉ouble绫诲瀷銆俿canf("%f",&base);鏀规垚 scanf("%d", &base);锛2锛夋眰num鏁扮粍鐨刦or寰幆涓浜嗕竴涓垎鍙枫俧or(i=0;n>0;i++);鏀规垚 for(i=0;n>0;i++)缁撴灉涓猴細
  • 涓閬c璇█10杩涘埗杞崲2杩涘埗闂,鎰熸縺涓嶅敖!
    绛旓細include <stdio.h> int main(){ int a,i=0,y[16]={0};printf("璇疯緭鍏ヤ竴涓10杩涘埗鏁帮細");scanf("%d",&a);printf("璇ユ暟鐨勪簩杩涘埗鏁颁负锛歕n");while(a>0){ y[i++]=a%2;a/=2;} for(i=15;i>=0;i--){ printf("%d",y[i]);} return 0;} ...
  • c璇█鐨杩涘埗杞崲闂
    绛旓細{ int a,i,p;printf("杈撳叆1銆2鎴3锛1浠h〃8杩涘埗锛2浠h〃10杩涘埗锛3浠h〃16杩涘埗锛塡n");scanf("%d",&i);if(i==1){ printf("杈撳叆鎵杞崲涓虹殑杩涘埗2鎴3锛1浠h〃8杩涘埗锛2浠h〃10杩涘埗锛3浠h〃16杩涘埗锛塡n");scanf("%d",&p);if(p==2){ / [缂鸿姳鎷彿]*/ scanf("%o",&a);printf("%d\n...
  • C璇█鐨勪竴涓杩涘埗杞崲鐨勫嚱鏁闂
    绛旓細鍥犱负if涓嬬殑澶ф嫭鍙烽噷锛宑hange鍦╬rintf涔嬪墠杩愯锛屾墍浠ュ厛澶勭悊骞惰緭鍑洪珮浣嶏紝闅忓悗printf褰撳墠浣嶇殑鍊笺傛墍浠ョ粨鏋滄槸浠庨珮浣嶈緭鍑哄埌浣庝綅锛岃屼笉鏄浉鍙嶃
  • 扩展阅读:原码 反码 补码 详解 ... c ++中进制转换怎么写 ... c语言进制转换计算器 ... c十十入门编程课程视频 ... c语言进制间互相转换 ... 二进制对照表大全 ... 进制转换在线 ... 进制转换器 ... c语言进制数互相转换代码 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网