如何在C++中输出变量的二进制值

Tom*_*oni 1 c++ binary bit-manipulation

我在C++编程类中编写了一个函数来编写一个输出变量值的二进制值的函数.

因此,例如,如果我将"a"的值设置为char,我应该得到"a"输出的二进制值.

我的C++教授并不是全世界最伟大的教授,而且我无法使用他给我们的神秘例子来使用我的代码.现在,我的代码只输出二进制值11111111,无论我设置它是什么(除非它的NULL然后我得到00000000).

这是我的代码:

#include <iostream>

#define useavalue 1

using namespace std;

void GiveMeTehBinary(char bin);

     int main(){

     #ifdef useavalue
     char b = 'a';
     #else
     char b = '\0';   
     #endif 

     GiveMeTehBinary(b);

     system("pause");

     return 0;

     }

     void GiveMeTehBinary(char bin){

     long s;

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

         s = bin >> i;

         cout << s%2;

         }

         cout << endl << endl;


     }
Run Code Online (Sandbox Code Playgroud)

非常感谢大家提前.你总是非常有帮助:)

编辑:现在修复 - 感谢一堆:D问题是我没有存储位移的值.我已将代码更新到上面的工作状态.

Kon*_*lph 6

编译器应警告您代码中某些无效的语句1.考虑

bin >> i;
Run Code Online (Sandbox Code Playgroud)

这没有任何作用,因为您不会将此操作的结果存储在任何位置.

另外,你为什么声明tehbinary为数组?您使用的只是一个元素(当前的元素).只存储当前位就足够了.

其他一些事情:

  • NULL必须仅与指针值一起使用.您的使用有效,但不是预期的用途.你真正想要的是一个空字符,即'\0'.
  • 请使用真实的描述性名称.我清楚地记得自己使用了变量调用tehdataz等等,但这确实使得代码难以阅读,一旦最初的滑稽消失,当你尝试阅读代码时,以及任何对代码进行评分的人都会感到讨厌.
  • 正确格式化代码有助于理解很多:使缩进合乎逻辑且一致.

1如果您正在使用g++,请始终传递编译器标志-Wall -Wextra以获取有关代码的有用诊断信息.