#include

void printfBinary(int value);

void printfBunary2(int value);

void printOct(int value); // 8进制

void printHex(int value); // 16进制

void printHex2(int value); // 16进制

void printOct2(int value);// 8进制

void printfBunary3(int value); // 2进制

int main()

{

/*

0000 0000 0000 0000 0000 0000 0000 1010

0000 0000 0000 0000 0000 0000 0000 0001

*/

int num = 10; // 1010

// printfBunary2(num);

// printOct(num);

// printHex(num);

// printHex2(num);

// printOct2(num);

printfBunary3(num);

return 0;

}

void printfBunary3(int value)

{

// 1.定义一个数组,用于保存二进制中所有的取值

char charValues[] = {'0','1'};

// 2.定义一个数组,用于保存查询后的结果

char results [32] = {'0'};

// 3.定义一个变量,用于记录当前需要存储到查询结果数组的索引

int pos = 32;

while (value != 0) {

// 1.取出1位的值

int res = value & 1;

// 2.利用取出来值到表中查询对应的结果

char c = charValues[res];

// 3.存储查询结果

results[--pos] = c;

// 4.移除二进制被取过的1位

value = value >> 1;

}

// 4.打印结果

for (int i = pos; i < 32; i ++) {

printf("%c",results[i]);

}

printf("\n");

}

void printOct2(int value)

{

// 1.定义一个数组,用于保存八进制中所有的取值

char charValues[] = {'0','1','2','3','4','5','6','7'};

// 2.定义一个数组,用于保存查询后的结果

char results [11] = {'0'};

// 3.定义一个变量,用于记录当前需要存储到查询结果数组的索引

int pos = 11;

while (value != 0) {

// 1.取出3位的值

int res = value & 7;

// 2.利用取出来得值到表中查询对应的结果

char c = charValues[res];

// 3. 存储查询的结果

results [--pos] = c;

// 4.移除二进制被取过的三位

value = value >> 3;

}

// 4.打印结果

for (int i = pos; i < 11; i ++) {

printf("%c",results[i]);

}

printf("\n");

}

void printHex2(int value)

{

// 1.定义一个数组,用于保存十六进制中所有的取值

// 规律:取出的4个二进制位得到的值,正好是数组中角标对应的值

char charValue[] = {'0','1','2','3','4','5','6','7','8',

'9','a','b','c','d','e','f'}; // 表 装了是可能所有的取值

char results[8] = {'0'};

int pos = 8;

while (value != 0) {

// 取出4位的值

int res = value & 15;

// 利用这个值作为索引去数组中查询对应的十六进制的值

char c = charValue[res];

// printf("%c",c);

// 将取出来的值防盗结果数组中

results [--pos] = c;

// results[] = c;

// 每取完一次,就干掉它最低的4位

value = value >> 4;

// printf("pos = %i",pos);

}

for (int i = pos; i < 8; i ++) {

printf("%c",results[i]);

}

printf("\n");

}

void printHex(int value)

{

for (int i = 0; i <= 8; i++) {

int res = value & 15; // 1111

// 对十六进制进行特殊处理

if (res > 9) {

char c = res - 10 + 'a';

printf("%c",c);

}

else

{

printf("%i",res);

}

value = value >> 4;

}

}

void printOct(int value)

{

for (int i = 0; i < 11; i++) {

int res = value & 7; // 111

printf("%i",res);

value = value >> 3;

}

}

void printfBunary2(int value)

{

for (int i = 0; i<=32; i++)

{

int res = value & 1;

printf("%i",res);

value = value >> 1;

}

printf("\n");

}

void printfBinary(int value)

{

// int offset = sizeof(value) * 8 - 1;

// 乘以 2的3次幂

int offset = (sizeof(value) << 3) - 1;

// int offset = 31;

while (offset >=0) {

int res = (value >>offset) & 1; // 右移 与1

printf("%i",res);

offset --;

}

printf("\n");

}

用查表法写c语言程序,C语言day07-15进制查表法相关推荐

  1. 怎么利用c 语言编程进行进制计算,编程达人 《汇编、C语言基础教程》第一章 进制1.1 进制的定义(连载)...

    第一章进制 进制跟我们生活是息息相关的,比如时钟是60进制.24进制,星期是7进制等,最常见的就是十进制了.而计算机也离不开进制,计算机是通过二进制进行操作和运算的. 我们为什么要学习进制? 方便我们 ...

  2. 针对文字加密的简单 JS 加密算法 --进制乱序法改良版

    在上一篇文章<普通 http 网络下数据的安全传输(设计原理)>中,我曾经推荐浏览器和服务器之间的加密通讯宜采用<几个文字加密的 JS 简洁算法(续2)--进制乱序法>中提及的 ...

  3. C语言递归函数实现十位数转换进制并打印出来(超详细)

    C语言递归函数实现十位数转换进制并打印出来 思路 事例 代码 思路   取余倒排序   将数字每次除以进制数的余数打印,但这样不是倒排序,通过将打印操作写在调用递归函数下面,可以在每次调用递归函数时将 ...

  4. ASCII表完整版(包含16进制对应表)

    ASCII表完整版(包含16进制对应表) ASCII码表完整版 ASCII值 16进制 控制字符 ASCII值 16进制 控制字符 0 00H NUT 32 20H (space) 1 01H SOH ...

  5. 题目:请写一段将正整数转化为四进制字符串的函数(十进制正整数转四进制字符串)

    题目: 请写一段将正整数转化为四进制字符串的函数,函数原型和参看说明如下:Stringchange_to_4(long a) 输入:a,这是long类型的正整数 输出:是一个由'0'.'1'.'2'. ...

  6. 我的世界c语言程序,C语言基本知识

    软件是将一组程序组织起来 每个程序由一组指令组成 数据结构+算法 数据结构 在程序中要指定数据的类型和数据的组织形式. 算法(程序的灵魂) 就是为了解决实际问题而提出的具体方法与步骤. 算法的特点 有 ...

  7. 0 1随机数C语言程序,C语言产生随机数的方法

    C语言产生随机数的方法 C语言的设计目标是提供一种能以简易的方式编译.处理低级存储器.产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言.那么C语言产生随机数的方法都有哪些呢?以下仅供参考! ...

  8. 1-3 5-7的c语言程序,C语言求1-1/3+1/5-1/7+...——小程序,大道理

    问题:用C语言编写程序求1-1/3+1/5-1/7+... 示例: #include void main(){ int n=; float sum=,a=; while(a<=){ sum=su ...

  9. 记得每天锻炼身体c语言程序,c语言程序

    一实验名称计算出1000以内10个最大素数之和二.实验目的1.熟练掌握if.if-else.if-else if语句和witch语句格式及使用方法,掌握if语句中的嵌套关系和匹配原则,利用if语句和s ...

最新文章

  1. 双指针问题最简单的教程(1)
  2. ORA-01078与LRM-00109报错解决
  3. python爬虫个人如何挣钱-个人利用Python爬虫技术怎么挣钱
  4. WebAPi接口安全之公钥私钥加密
  5. keras神经网络模型的保存与加载
  6. matlab工具箱中draw_graph不能用的解决方案
  7. 如何打造一支有超强战斗力的技术团队?
  8. 【Oracle】用户管理
  9. php实现排序,PHP实现各种排序
  10. TFS与Git结合进行代码管理
  11. 博客改版日记9.7——内测先锋队总动员
  12. mysql提高运行效率_提升Mysql执行效率的SQL优化技巧汇总
  13. 全网最全软件版本号相关内容科普
  14. 由两个重要极限推导常见等价无穷小以及常见导数公式
  15. 推荐10款一直在使用的Chrome提效插件
  16. matlab版大学物理学,MATLAB可视化大学物理学(第2版)
  17. 我的世界基岩版红石教程(超简单)2
  18. 二元多项式基本运算 选择合适的存储结构表示二元多项式,并实现基本的加减运算 要求: 1)二元多项式的输入采用如下方式进行键盘输入 (5y^2+7)x^4 + (3y^4+2y+9)x^2 + (2y
  19. 电影和电视Movies and TV
  20. 使用Html/Css简单创建一个菜单

热门文章

  1. C++ uint8_t
  2. 简单的方法保存微信语音
  3. iphone的致命硬伤
  4. 安装lux:推荐一款网页视频下载工具。并简单使用。(win)
  5. EI会议论文,第二届云计算、大数据与数字经济国际学术会议最终截稿倒计时10天
  6. Flutter图片加载数据
  7. TabLayout 的使用 更改下划线的长度,和一个奇葩的问题
  8. CUBEMX+FreeRTOS使用ArmComplier6(AC6)编译器的设置方法
  9. Deep Network with Stochastic Depth(阅读笔记)一种随机深度的正则化方法
  10. JAVA POI删除word里面的批注comment