C语言——位和字节、进制的转换

前言

位(bit)是计算机内存的基本构建块,是计算机最小的存储单元

一、位、字节和字

是计算机内存的基本构建块

计算机最小的存储单元是 位(bit),可以存储 0 或 1

字节(byte)是常用的计算机存储单元,1 Byte = 8 bit

(Word)代表计算机处理指令或数据的二进制数位数,是计算机进行数据存储和数据处理的运算的单位。

  • 对于 32 位计算机,1字=32位=4字节
  • 对于 64 位计算机,1字=64位=8字节

转换关系
1T——1024GB
1GB——1024MB
1MB——1024KB
1KB——1024B
1byte——8bit

二、八进制和十六进制

1.表示方法

  • 0x 或 0X 前缀表示十六进制值,如十进制数 16 表示成十六进制是 0x10 或 0X10
  • 0 前缀表示八进制数,如十进制数 16 表示成八进制是 020

2.打印

转换说明进制数
%d十进制
%o八进制
%x十六进制

若还要显示各进制数的前缀 0、0x 或 0X,就分别要用 %#o、%#x、%#X

例子

源代码

#include<stdio.h>

int main()
{
	int num = 16;

	printf("以不同进制打印十进制数 16:\n");
	printf("十进制:%d\n", num);
	printf("八进制:%o\n", num);
	printf("十六进制:%x\n\n", num);
	
	printf("以不同进制打印十进制数 16,并显示各进制数的前缀:\n");
	printf("十进制:%d\n", num);
	printf("八进制:%#o\n", num);
	printf("十六进制:%#x\n", num);
	printf("十六进制:%#X\n", num);
	
	return 0;
}

运行结果

在这里插入图片描述

三、进制的转换

1.二进制转十进制

  • 展开,然后每一位乘积后相加

如:(10010)₂=(1×2⁴+0×2³+0×2²+1×2¹+0×2⁰)₁₀

  • 8421法

如:(10010)₂=16+0+0+2+0

2.十进制转二进制

  • 除以2逆向取余

在这里插入图片描述

  • 逆8421法

如:(37)₁₀ --> 32+4+1 --> 00100101

3.八进制转二进制

每一个八进制位转换成 3 个二进制位,左边不足 3 个的补上 0

如:567 --> 101 110 111

234 --> 010 011 100

4.二进制转八进制

从右向左,每 3 个二进制位为一组,每一组转换成 1 个八进制位

如:011 101 110 101 011 --> 35653

5.十六进制转二进制

每一个十六进制位转换成 4 个二进制位,左边不足 4 个的补上 0

如:109CBE --> 0001 0000 1001 1100 1011 1110

6.二进制转十六进制

从右向左,每 4 个二进制位为一组,每一组转换成 1 个八进制位

如:1011 0010 0101 1000 1100 --> B258C
1100 1011 1110

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

青春无限坑

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值