二进制,十进制,十六进制

本文介绍了C/C++编程中表示十六进制数的两种常见方式——0x前缀和H后缀。虽然两者在意义上等价,但在实际使用中,C语言只接受0x作为十六进制数的标识。文章详细阐述了不同进制数的表示,包括二进制、八进制、十进制和十六进制,并强调了在内存中一个int类型占据的字节数。
0x是16进制的前缀,H是16进制的后缀

都是表示十六进制数,意义上没有什么区别,完全相等。至于什么时候用0x,什么时候用H,这取决于你在什么
环境下使用,如果在C/C++,必须用0x来表示。

在C语言中是不能用H的.
在C语言里,整数有三种表示形式:十进制,八进制,十六进制。
其中以数字0开头,由0~7组成的数是八进制。以0X或0x开头,由0~9,A~F或a~f 组成是十六进制。除表示正负
的符号外,以1~9开头,由0~9组成是十进制。

1. 二进制数中只有两个字符0和1

2.八进制:以0开头,由0~7组成的数。如,0126,050000
3.十进制:除表示正负的符号外,以1~9开头,由0~9组成。如,128,+234,-278
4.十六进制:以0X或0x开头,由0~9,A~F或a~f 组成。如,0x12A,0x5a000

注:int 占4个字节,一个字节占8个位(8个格子)
 (一个int相当于内存里面有32个格子,如000000.....0000,总共三十二位)

阅读链接

### 二进制十进制十六进制之间的转换 #### 二进制十进制 要将二进制数转换为十进制数,可以采用按位权展开的方法。每一位上的数值乘以该位对应的权重(即$2^n$),其中$n$是从右向左的位置索引,起始位置为0。 例如,对于二进制数`1011`: $$ (1 \times 2^3) + (0 \times 2^2) + (1 \times 2^1) + (1 \times 2^0)=8+0+2+1=11_{\text{decimal}} $$ 因此,二进制`1011`等于十进制中的`11`[^1]。 ```python binary_number = "1011" decimal_value = int(binary_number, 2) print(f"Binary {binary_number} to decimal is: {decimal_value}") ``` #### 十进制二进制 当需要把一个十进制整数转换成二进制形式时,可以通过不断地除以2并记录余数来实现这一过程;最后得到的结果就是这些余数逆序排列而成的新字符串表示法。 比如要把十进制的`11`转化为二进制,则操作如下: | 步骤 | 商 | 余数 | |------|-------|------| | 1 | 5 | 1 | | 2 | 2 | 1 | | 3 | 1 | 0 | | 4 | 0 | 1 | 所以最终结果是`1011`。 ```python decimal_number = 11 binary_representation = bin(decimal_number)[2:] # 去掉前缀 '0b' print(f"Decimal {decimal_number} to binary is: {binary_representation}") ``` #### 二进制十六进制 在处理较大范围内的数据时,通常会使用更紧凑的形式——十六进制。每四位二进制数字对应一位十六进制字符。具体来说,先分组再映射至相应的字母或数字即可完成此变换。 举个例子,给定二进制串`10110101`,将其分为两部分:`1011` 和 `0101` ,分别对应于十六进制下的B和5,故而整个序列变为`B5`。 ```python binary_string = "10110101" hexadecimal_result = hex(int(binary_string, 2))[2:].upper() # 转换为大写的十六进制 print(f"Binary string '{binary_string}' converts to hexadecimal as: {hexadecimal_result}") ``` #### 十六进制二进制 反过来,如果有一个十六进制值想要获得其等价的二进制表达方式,那么只需要按照上述原则反向执行就可以了:每一个十六进制字符都代表四个连续的二进制位。 比如说,对于十六进制数`A9`而言,它所对应的二进制编码应该是`10101001`。 ```python hexadecimal_input = "A9" binary_output = format(int(hexadecimal_input, 16), '0>8b') # 确保至少有8位宽 print(f"Hexadecimal value '{hexadecimal_input}' corresponds to the binary sequence: {binary_output}") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值