C - 打印给定字符的二进制文件

标签 c bitwise-operators

我正在学习 C,我的部分练习是处理按位运算符。我正在尝试创建一个函数,为 char 输入打印出 2 的补码。

这是我目前所拥有的:

#include <stdio.h>
#include <stdlib.h>

void  find_binary(char ch) {

        long bit_index = 0;
        unsigned long sz = sizeof(ch)*8-1;
        for (bit_index = 0; bit_index <= sz; ++bit_index) {
                int bit = (1 << bit_index) & ch;
                printf("%d", bit);
        }
        printf("\n");
}

这是当我输入 'h' 时的输出:0008032640

为什么要打印 0 和 1 以外的整数?

最佳答案

表达式

int bit = (1 << bit_index) & ch;

用相应的位集产生零或二的幂。要将其置于 0..1 范围内,请将 ch 右移并使用 1 进行屏蔽,或者按如下方式转换您的表达式:

int bit = ((1 << bit_index) & ch) != 0;

关于C - 打印给定字符的二进制文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25754190/

相关文章:

hash - MD5哈希算法使用哪种类型的左旋转?

php - MySQL 按位非操作没有返回所需的值

c++ - Windows 中的启动画面

c - 在 Linux 中,如何确定 optmem_max 的最佳值?

c - C中循环内的 sleep 函数有问题

c - libxml2 编写器差异

JavaScript:将任何运算符变成赋值运算符是否合法?

JavaScript 按位运算

c - 从哈希表 C 中获取链表

c - 生成位模式