uint64_t 一些操作

1. 两个无符号32位整数,组合成一个无符号64位整数
高位向左移动32位,在后端添加32个0,再与低位做或的运算,形成一个64位数

uint64_t make64(uint32_t high, uint32_t low)
{
return (uint64_t) high << 32 | low;
}


2. 取高32位数,直接向右移动32位,去掉低32位,得到高32位数

uint32_t high32(uint64_t value)
{
return value >> 32;
}


3.
与32个0和32个1的64位数做与运算,得到低32位

uint32_t low32(uint64_t value)
{
//return value & 0-(32)-1(32);
return value & 2^32;
}


4. 打印输出 uint_64, long long 是存储了两个long, 地址相连

long long longint;
longint = 0x1BCDEFABCDEFCDEF; /* 2003520930423229935 */
printf("%x%x\n", *(((int*)(&longint))+1), longint); /* Correct */
printf("%lld\n",longint); /* Correct */
printf("%llx\n",longint); /* Correct */


输出

1bcdefabcdefcdef
2003520930423229935
1bcdefabcdefcdef

符号属性 长度属性 基本型 所占位数 取值范围 输入符举例 输出符举例

-- -- char 8 -2^7 ~ 2^7-1 %c %c、%d、%u

signed -- char 8 -2^7 ~ 2^7-1 %c %c、%d、%u

unsigned -- char 8 0 ~ 2^8-1 %c %c、%d、%u

[signed] short [int] 16 -2^15 ~ 2^15-1 %hd

unsigned short [int] 16 0 ~ 2^16-1 %hu、%ho、%hx

[signed] -- int 32 -2^31 ~ 2^31-1 %d

unsigned -- [int] 32 0 ~ 2^32-1 %u、%o、%x

[signed] long [int] 32 -2^31 ~ 2^31-1 %ld

unsigned long [int] 32 0 ~ 2^32-1 %lu、%lo、%lx

[signed] long long [int] 64 -2^63 ~ 2^63-1 %I64d

unsigned long long [int] 64 0 ~ 2^64-1 %I64u、%I64o、%I64x

-- -- float 32 +/- 3.40282e+038 %f、%e、%g

-- -- double 64 +/- 1.79769e+308 %lf、%le、%lg %f、%e、%g

-- long double 96 +/- 1.79769e+308 %Lf、%Le、%Lg
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值