标签: unsigned

为什么unsigned int包含负数

我所知道的unsigned数字(unsigned short,int和longs),它只包含正数,但是下面的简单程序成功地将一个负数分配给unsigned int:

  1 /*
  2  * =====================================================================================
  3  *
  4  *       Filename:  prog4.c
  5  *
  6  * =====================================================================================
  7  */
  8 
  9 #include <stdio.h>
 10 
 11 int main(void){
 12 
 13     int v1 =0, v2=0;
 14     unsigned int sum;
 15     
 16     v1 = 10;
 17     v2 = 20;
 18     
 19     sum = v1 - v2;
 20     
 21     printf("The subtraction of %i from %i is %i \n" , v1, v2, sum);
 22     
 23     return 0;
 24 }
Run Code Online (Sandbox Code Playgroud)

输出是: The subtraction of …

c printf unsigned

8
推荐指数
3
解决办法
5779
查看次数

unsigned在if语句比较中签名?

我在这个网站上搜索了一个答案,发现许多对未签名/签名比较的回复,但是这个问题是只比较了无符号参数,但它仍然很有趣.

以下代码的问题在于第一个if-statment不会发生("hello"),而第二个("world")就是这样.我已经解释为在if-statment 内部进行的计算会生成一个负数但是保存到变量的结果完全相同的计算不会(即使结果被保存到有符号变量).

使用的编译器是gcc 4.4.

unsigned short u16_varHigh;  
unsigned short u16_varLow;  
unsigned short u16_Res1;  
signed short   s16_Res1;  

u16_varHigh = 0xFFFF;  
u16_varLow = 10;

u16_Res1 = u16_varLow - u16_varHigh; // response is 11 as expected  
s16_Res1 = u16_varLow - u16_varHigh; // response is 11 as expected

// Does not enter  
if( (u16_varLow - u16_varHigh) > (unsigned short)5 )  
{  
 printf( "hello" );  
}

// Does enter  
if( (unsigned short)(u16_varLow - u16_varHigh) > 5 )  
{  
 printf( "world" …
Run Code Online (Sandbox Code Playgroud)

c comparison unsigned if-statement

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

声明"unsigned T"

我想在模板中使用unsigned T:

template<class T>
void signed2unsigned(const T* source, unsigned T* dest, size_t n)
    {
    do
        {
        intmax_t s=*source;
        s+=min(*source);

        *dest=s;

        ++dest;
        ++source;
        --n;
        }
    while(n!=0);
    }
Run Code Online (Sandbox Code Playgroud)

这不起作用,因为在考虑类型T之前,unsigned without扩展为unsigned int.是否有一个解决方法,只是介绍U并写入文档,U必须是一个无符号T?

c++ unsigned templates integer

8
推荐指数
2
解决办法
281
查看次数

unsigned关键字是否会影响sizeof的结果?

C和C++是否保证类型的无符号等价物具有相同的大小?

例:

size_t size = sizeof(unsigned int);
Run Code Online (Sandbox Code Playgroud)

unsigned这里完全实际意义?

c c++ unsigned sizeof

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

在C/C++中使用〜的1的补码

我正在使用Visual Studio 2013.
最近我尝试了~运算符1的补码:

int a = 10;
cout << ~a << endl;
Run Code Online (Sandbox Code Playgroud)

输出是 -11

但对于

unsigned int a = 10;
cout << ~a << endl;
Run Code Online (Sandbox Code Playgroud)

输出是 4294967296

我不明白为什么输出是-11签名的情况int.请帮我解决这个困惑.

c c++ unsigned signed ones-complement

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

如何在java中输出无符号整数的绝对值

我想分配4294967295给一个变量(2^32-1)很明显,我不能这样做Integer,并且可以做到Long.

但是,我注意到Java 8提供了无符号整数(至少某些方法).

有人知道方法Integer.parseUnsignedInt()是什么吗?当我输入"4294967295"它并打印变量时,它将输出为-1 (-2for 4294967294,-3for 4294967293等等......)

有没有一种方法可以4294967295在变量中使用?

我在这里错过了什么吗?

a=Integer.parseUnsignedInt("4294967295");
System.out.println(a);
Run Code Online (Sandbox Code Playgroud)

这给出了输出,-1但我预计4294967295.

java int unsigned java-8

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

将有符号数与无符号数相乘时,应该使用“mul”还是“imul”?

我发现 和 都mul可以imul用来将有符号数乘以无符号数。

例如:

global _start

section .data
    byteVariable DB -5

section .text
_start:

mov al, 2
imul BYTE [byteVariable]
Run Code Online (Sandbox Code Playgroud)

可以用 替换imulmul结果还是一样(-10)。

有符号数与无符号mul数相乘时和imul完全相同,还是有区别?

x86 assembly unsigned signed multiplication

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

您是否必须将`u`后缀附加到无符号整数?

我知道u后缀的意思是“未签名”。但是以下代码中有必要吗?

uint32_t hash = 2166136261u;
Run Code Online (Sandbox Code Playgroud)

是问题还是惯例?还是在这种情况下有任何技术意义?该值无论如何都应转换为无符号,因为它uint32_t是无符号的。

什么时候应该,什么时候不应该将u后缀用于无符号整数值?

c variables unsigned literals

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

如果一个整数默认是有符号的,那么为什么会存在signed关键字呢?

我很好奇为什么存在 signed 关键字,因为我相信大多数整数和其他变量在默认情况下都是有符号的。将 signed 关键字放在 int 之前几乎没有任何作用。它有什么用途,为什么存在?

c c++ unsigned signed

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

标准 C++ 库中 size_t 的有符号变体

标准 C++ 中是否有 size_t 的有符号变体?意味着与 size_t 完全相同的位大小,但有符号。

我当然可以这样做:

#include <type_traits>
using signed_size_t = std::make_signed_t<std::size_t>;
Run Code Online (Sandbox Code Playgroud)

但也许标准库中已经有类似的定义,而不是发明额外的类型名称?

我知道有 ssize_t 和 ptrdiff_t,都有签名。但根据他们的描述,它们似乎都可以具有与 size_t 不同的位大小。但我需要与 size_t 完全相同的位大小,但已签名。

c++ unsigned signed std size-t

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