相关疑难解决方法(0)

Visual Studio c ++为什么不编译0b00000001

我正在尝试移植我最初为Linux制作的一个小程序,现在唯一给我一个错误的是这样写的任何二进制数0b01010101.

我找不到任何关于为什么这在Windows上不起作用或者如何让它在Windows上工作的信息.

这不是c ++的标准吗?

c++ windows binary visual-studio-express

4
推荐指数
1
解决办法
3825
查看次数

我无法打印按位运算符的结果

可能重复:
我可以在C或C++中使用二进制文字吗?

我无法在C中显示按位运算符的结果.在下面的代码中,a&b应为100001且a | b为111111.但是,打印结果不同.无论有没有itoa,我都试图这样做,但无济于事.为什么程序没有正确打印答案?

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

int main (int argc, char* argv[]) {

  unsigned a = 101101;
  unsigned b = 110011;

  unsigned c = a&b;
  unsigned d = a|b;

  char s[100];
  char t[100];

  itoa(c,s,2);
  itoa(d,t,2);

  printf("%s\n",s); /* Shouldn't it produce 100001? 
                       Instead I get 11000100010101001*/
  printf("%s\n",t); /* Ought to print 111111.
                       Instead it prints 11010111111111111 */

  return 0;
}
Run Code Online (Sandbox Code Playgroud)

谢谢

c bitwise-operators

3
推荐指数
1
解决办法
466
查看次数

如何使用C语言在变量中存储一系列位

如何使用C语言将这一系列 "000001111110001"(15 )存储在变量中.

我试图将它存储到unsigned int:

unsigned int key=000001111110001;
Run Code Online (Sandbox Code Playgroud)

但它没有,所以请帮助我.

c

3
推荐指数
1
解决办法
266
查看次数

如何将4个UINT8变量连接成一个UINT32变量?

我有以下UINT8变量:

UINT8 var1 = 0b00000001; //0000 0001
UINT8 var2 = 0b00000011; //0000 0011
UINT8 var3 = 0b00000111; //0000 0111
UINT8 var4 = 0b00001111; //0000 1111
Run Code Online (Sandbox Code Playgroud)

我想将这四个UINT8变量打包成一个UINT32变量,其值如下:

UINT32 var1 = 0b00000001000000110000011100001111; //00000001 00000011 00000111 00001111
Run Code Online (Sandbox Code Playgroud)

以下代码是否会正确安全地执行此操作?

UINT32 var1 = (var1<<24) + (var2<<16) + (var3<<8) + var4;
Run Code Online (Sandbox Code Playgroud)

c++ int bit-manipulation type-conversion visual-c++

3
推荐指数
1
解决办法
1700
查看次数

输入二进制而不是十六进制

可能重复:
我可以在C或C++中使用二进制文字吗?

在CI可以写

uint32_t a = 0x40022000;
Run Code Online (Sandbox Code Playgroud)

使用十六进制 我可以输入二进制数字来做类似的事吗?

c

2
推荐指数
1
解决办法
8004
查看次数

有没有办法使用位初始化char?

我试图代表一副扑克牌中的52张牌.我需要总共6位; 2为西装,4为排名.我以为我会使用char并且前两位为零,因为我不需要它们.问题是我不知道是否有办法使用位初始化char.

例如,我想做的是:

char aceOfSpades = 00000000;

char queenOfHearts = 00011101;

我知道一旦我初始化了char,我可以操作这些位,但如果我可以从头开始初始化它会更容易,如我的例子所示.提前致谢!

c++

2
推荐指数
1
解决办法
1191
查看次数

c ++是一种与空格无关的语言,是规则的例外

这个wikepedia页面将c ++定义为"与空白无关的独立语言".虽然与所有语言一样都是正确的,但规则有例外.我现在唯一能想到的就是:

vector<vector<double> >
Run Code Online (Sandbox Code Playgroud)

必须有空格,否则编译器将>>解释为流操作符.还有其他什么.编译一个例外列表会很有趣.

c++ whitespace

1
推荐指数
1
解决办法
1840
查看次数

如何在c中初始化数组?

我已经编写了这段代码,但是在编译时我收到了以下语句的消息"invalid expression"

unsigned short address[] ={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};/*array is being   initialized here.no problem uptil here.*/
unsigned short rowHead=3;
unsigned short colHead=0;
unsigned short rowTail =0;
unsigned short colTail =0;
unsigned short foodx;
unsigned short foody;
unsigned short turn=0;
void gameOver()
{
unsigned short i=0;
address[] ={0b10000001,0b01000010,0b00100100,0b00011000,
            0b00011000,0b00100100,0b01000010,0b10000001};
/*this is the line where compiler complaints as invalid expression.*/
while(1)
    {
    PORTD &=~(1<<i);
    PORTB =address[i];
    delay_ms(5);
    PORTD |=1<<i;
    i%8;
    }
}
Run Code Online (Sandbox Code Playgroud)

c arrays

0
推荐指数
1
解决办法
1619
查看次数

将二进制数拆分成数字

我知道要获得整数的最后一位数,你可以这样做:

printf("%d\n", 1105 % 10); //It will print 5
Run Code Online (Sandbox Code Playgroud)

现在,我能用二进制数做同样的事情吗?

printf("%d\n", 0101 % 10); //This will print 5 as well
Run Code Online (Sandbox Code Playgroud)

c split

0
推荐指数
1
解决办法
965
查看次数

C/C++ 中的 0b00 和 0b11 是什么意思?


我有一个小问题,希望有一个简单的答案。在 C/C++ 中对 Arduino 进行编程时,行“DDRB |= 0b00101000;” 发生。虽然我知道 DDRB 是端口 B 的数据方向寄存器以及“0b00”(即插槽 13 到 9)之后数字的含义,但我仍然不知道“0b00”是什么意思。

在定义中,我只读它意味着高(而 0b11 意味着低)但这意味着什么?

完整代码:

#include <avr/io.h>
#include <util/delay.h>

int main (void) {

  float seconds = 0.5;
  int time = 1000 * seconds;

  DDRB |= 0b00101000;

  while (1) {

    PORTB |= 0b00001000; 
    _delay_ms(time);
    PORTB &= 0b11110111; 
    PORTB |= 0b00100000;
    _delay_ms(time); 
    PORTB &= 0b11011111; 
  }
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

c++ arduino

0
推荐指数
1
解决办法
3260
查看次数

错误:'运营商^'不匹配

如何在字符串中按位xor?谁能帮我这个...

#include <bits/stdc++.h>
using namespace std;

int main() {
    // your code goes here

    string a="1001";
    string b="1111";
    string c=a^b;
    cout << "c: " << c << "\n";
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

错误:'operator ^'不匹配(操作数类型是'std :: __ cxx11 :: string {aka std :: __ cxx11 :: basic_string}'和'std :: __ cxx11 :: string {aka std :: __ cxx11 :: basic_string }')string c = a ^ b;

c++ string

-1
推荐指数
1
解决办法
802
查看次数

宏观意义在c ++中

我碰巧遇到了一个宏定义,如下面的c ++代码所示(https://github.com/LairdCP/UwTerminalX).

 #define SpeedModeInactive                 0b00
 #define SpeedModeRecv                     0b01
 #define SpeedModeSend                     0b10
 #define SpeedModeSendRecv                 0b11
Run Code Online (Sandbox Code Playgroud)

当我尝试使用visual studio 2010编译它时,它给我以下错误.

Error   14  error C2059: syntax error : ')' 
Run Code Online (Sandbox Code Playgroud)

这个宏是什么意思?宏的用法如下所示.

if ((gchSpeedTestMode == SpeedModeSendRecv || gchSpeedTestMode == SpeedModeRecv) && (gintSpeedBytesReceived10s > 0 || ui->edit_SpeedBytesRec10s->text().toInt() > 0))
{
    //Data has been received in the past 10 seconds: start a timer before stopping to catch the extra data packets
    gchSpeedTestMode = SpeedModeRecv;
    gtmrSpeedTestDelayTimer = new QTimer();
    gtmrSpeedTestDelayTimer->setSingleShot(true);
    connect(gtmrSpeedTestDelayTimer, SIGNAL(timeout()), this, SLOT(SpeedTestStopTimer()));
    gtmrSpeedTestDelayTimer->start(5000);

    //Show message …
Run Code Online (Sandbox Code Playgroud)

c++ macros qt

-1
推荐指数
1
解决办法
114
查看次数

如何在C/C++中声明16位二进制位字符?

每个人都知道,如果你声明一个8位的值,你可以做类似的事情

int a = B10001110; 
Run Code Online (Sandbox Code Playgroud)

就像那个vut我不知道怎么用16位声明它,我做了类似的事情

int b = B1000000100001111; 
Run Code Online (Sandbox Code Playgroud)

但这给了我错误.我可以做些什么吗?我想要这个16位格式声明.

c c++ literals

-10
推荐指数
1
解决办法
121
查看次数