C语言中printf打出2进制与16进制数

C语言中,打印16进制可以使用printf的%x格式。

打印二进制数并没有现成的格式数值,只能自行编写函数打印。

以下是一个打印二进制值的函数,通过位操作,逐位判断二进制值,并输出对应的值。

默认高位0不输出。

void print_bin(int n)
{
    int l = sizeof(n)*8;//总位数。
    int i;
    if(i == 0)
    {
         printf("0");
         return;
     }
    for(i = l-1; i >= 0; i --)//略去高位0.
    {
        if(n&(1<<i)) break;
    }
 
    for(;i>=0; i --)
        printf("%d", (n&(1<<i)) != 0);
}

 

  • 8
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
C语言,可以使用不同的方法将十进制转换为十六进制。以下是三种常见的方法: 方法一:使用循环和条件语句 可以使用循环和条件语句来实现十进制到十六进制的转换。具体代码如下所示: ```c #include <stdio.h> int main() { int dec, i = 0; char hex\[200\]; printf("请输入十进制字:\n"); scanf("%d", &dec); while (dec) { if (dec % 16 >= 10) hex\[i\] = dec % 16 + 55; else hex\[i\] = dec % 16 + 48; i++; dec = dec / 16; } printf("十进制转十六进制的字是:\n"); for (i = i - 1; i >= 0; i--) printf("%c", hex\[i\]); return 0; } ``` 这段代码首先通过`scanf`函获取用户输入的十进制,然后使用循环和条件语句将其转换为十六进制,并存储在字符组`hex`,最后通过循环打印出转换后的十六进制。 方法二:使用位运算和移位操作 另一种方法是使用位运算和移位操作来实现十进制到十六进制的转换。具体代码如下所示: ```c int DectoHex(int dec, unsigned char *hex, int length) { for(int i = length - 1; i >= 0; i--) { hex\[i\] = (dec % 256) & 0xFF; dec /= 256; } return 0; } ``` 这段代码,`DectoHex`函接受一个十进制`dec`,一个指向无符号字符组的指针`hex`,以及组的长度`length`。函通过循环和位运算将十进制转换为十六进制,并将结果存储在`hex`。 方法三:使用格式化输出 还可以使用格式化输出来实现十进制到十六进制的转换。具体代码如下所示: ```c #include <stdio.h> #define ll long long int int main() { ll a, b; while(scanf("%lld %lld", &a, &b) != EOF) { if(a + b < 0) { printf("-%llX\n", -1 * (a + b)); } else { printf("%llX\n", a + b); } } return 0; } ``` 这段代码,使用`scanf`函获取两个十进制`a`和`b`,然后使用格式化输出将其转换为十六进制并打印出来。如果结果为负,则在输出前加上负号。 以上是三种常见的在C语言将十进制转换为十六进制的方法。你可以根据自己的需求选择其一种方法来实现。 #### 引用[.reference_title] - *1* [C语言实现十进制转换为十六进制](https://blog.csdn.net/qq_42680327/article/details/129439898)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [C语言:十进制、十六进制据互换](https://blog.csdn.net/m0_38106923/article/details/120000137)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [C语言十进制转换十六进制(细解)](https://blog.csdn.net/Zhengyangxinn/article/details/107380986)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值