标签: unsigned

为什么?1> sizeof(int)?

请考虑以下代码:

template<bool> class StaticAssert;
template<> class StaticAssert<true> {};
StaticAssert< (-1 < sizeof(int)) > xyz1; // Compile error
StaticAssert< (-1 > sizeof(int)) > xyz2; // OK
Run Code Online (Sandbox Code Playgroud)

为什么是-1 > sizeof(int)真的?

  1. -1提升到unsigned(-1)那时是真的吗unsigned(-1) > sizeof(int)
  2. 这是真的,-1 > sizeof(int)相当于-1 > size_t(4)如果的sizeof(int)的是4,如果是这样的话,为什么-1 > size_t(4)是假的?

这个C++标准是否合适?

c++ unsigned sizeof type-conversion modular

17
推荐指数
2
解决办法
1990
查看次数

Is this a bug in std::gcd?

I've come across this behavior of std::gcd that I found unexpected:

#include <iostream>
#include <numeric>

int main()
{
    int      a = -120;
    unsigned b =  10;

    //both a and b are representable in type C
    using C = std::common_type<decltype(a), decltype(b)>::type;
    C ca = std::abs(a);
    C cb = b;
    std::cout << a << ' ' << ca << '\n';
    std::cout << b << ' ' << cb << '\n';

    //first one should equal second one, but doesn't
    std::cout << std::gcd(a, b) …
Run Code Online (Sandbox Code Playgroud)

c++ unsigned libstdc++ language-lawyer c++17

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

如何在Java中反转无符号字节的位?

我正在尝试为非常简单的加密类型编写解码器.通过扫描仪输入0-255的数字,这些位被反转,然后转换为字符并打印.

例如,数字178应转换为字母"M".

178是10110010.

反转所有位应该给出01001101,即77或"M"作为字符.

我遇到的主要问题是,据我所知,Java不支持无符号字节.我可以将值读取为int或short,但由于额外的位,因此在转换期间值将关闭.理想情况下,我可以使用按位补码运算符,但我认为如果我使用带符号数字,我最终会得到负值.关于如何处理这个问题的任何想法?

java unsigned byte bits complement

16
推荐指数
4
解决办法
4万
查看次数

正确初始化无符号字符的方法*

初始化的正确方法是unsigned char*什么?我目前正在这样做:

unsigned char* tempBuffer;
tempBuffer = "";
Run Code Online (Sandbox Code Playgroud)

或者我应该使用memset(tempBuffer, 0, sizeof(tempBuffer));

c c++ unsigned char

16
推荐指数
3
解决办法
7万
查看次数

如何在C中将unsigned int转换或转换为int?

如果问题看起来很奇怪,我道歉.我正在调试我的代码,这似乎是问题,但我不确定.

谢谢!

c int unsigned types casting

16
推荐指数
3
解决办法
10万
查看次数

C中的无符号值

我有以下代码:

#include <stdio.h>

int main() {
    unsigned int a = -1;
    int b = -1;
    printf("%x\n", a);
    printf("%x\n", b);

    printf("%d\n", a);
    printf("%d\n", b);

    printf("%u\n", a);
    printf("%u\n", b);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出是:

ffffffff
ffffffff
-1
-1
4294967295
4294967295
Run Code Online (Sandbox Code Playgroud)

我可以看到根据传递给printf函数的值将值解释为有符号或无符号.在这两种情况下,字节都是相同的(ffffffff).那么,这个unsigned词是什么意思?

c printf unsigned

16
推荐指数
1
解决办法
9万
查看次数

为什么std :: bitset建议比sizeof更多的可用位表示有?

我正在研究C++中的一些简单的位操作问题,并在尝试可视化我的步骤时遇到了这个问题.我知道分配给不同基元类型的位数可能因系统而异.对于我的机器,sizeof(int)输出4,所以我的char价值有4 位.我现在也知道一个字节的定义通常是8位,但不一定是这种情况.当我输出CHAR_BIT我得到8.因此,我希望我的int值总共有32位.

然后我可以继续将我的二进制值打印int到屏幕上:

int max=~0; //All my bits are turned on now
std::cout<<std::bitset<sizeof(int)*CHAR_BIT>(max)<<std::endl;

$:11111111111111111111111111111111
Run Code Online (Sandbox Code Playgroud)

如果我想要,我可以增加bitset大小:

int max=~0;
std::cout<<std::bitset<sizeof(int)*CHAR_BIT*3>(max)<<std::endl;

$:000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111
Run Code Online (Sandbox Code Playgroud)

为什么有这么多?我本来期望只有32个,用零填充.相反,有两倍,发生了什么?

当我重复实验unsigned int,其大小相同时int,额外的实验不会出现:

unsigned int unmax=~0;
std::cout<<std::bitset<sizeof(unsigned int)*CHAR_BIT*3>(unmax)<<std::endl;

$:000000000000000000000000000000000000000000000000000000000000000011111111111111111111111111111111
Run Code Online (Sandbox Code Playgroud)

c++ unsigned sizeof bitset

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

C#多线程无符号增量

我想从多个线程递增无符号整数.

我知道Interlocked.Increment,但它不处理无符号整数.我可以使用lock(),但出于性能原因我不愿意.

它只是以正常方式增加它的线程安全吗?如果偶尔的增量丢失也没关系,因为它只用于统计.我不想要的是腐败的价值.

c# multithreading unsigned interlocked-increment

15
推荐指数
2
解决办法
9239
查看次数

如何在Java中打印short作为unsigned short

我有一个short数组,其值介于0和short的最大值之间.我缩放数据(将其显示为TYPE_USHORT),以便生成的短值范围在0到65535之间.我需要打印一些缩放值,但无法弄清楚如何.数据位于数组和BufferedImage中.

java unsigned short ushort

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

将负值分配给unsigned int时会发生什么?

可能重复:
在C中签名为无符号转换 - 它总是安全吗?

假设我声明了unsigned int类型的变量: unsigned int x = -1;

现在-1的二进制补码(假设32位机器)为0xFFFFFFFF.现在,当我将此值赋给x时,值0x7FFFFFFF是否已分配给x?

如果是这样,则printf("%d",x); 会打印十进制等效的0x7FFFFFFF,对吧?但是,显然这没有发生,因为打印的值是-1.我在这里错过了什么?

编辑:我知道我们可以使用%u格式说明符来打印无符号值.但这无助于回答上述问题.

c unsigned

14
推荐指数
2
解决办法
4万
查看次数